1 / 23

Multithreading in Java

Multithreading in Java. Sameer Singh Chauhan Lecturer, I. T. Dept., SVIT, Vasad. Outline. Introduction Process and Multi-tasking Thread Need for Multithreading Thread Support in Java Thread Scheduling Summary. Process. It is executable program in memory Process Properties

sanam
Download Presentation

Multithreading in Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Multithreading in Java Sameer Singh Chauhan Lecturer, I. T. Dept., SVIT, Vasad

  2. Outline • Introduction • Process and Multi-tasking • Thread • Need for Multithreading • Thread Support in Java • Thread Scheduling • Summary

  3. Process • It is executable program in memory • Process Properties • Address space • Own program counter, execution context • Each process may execute a different program • May contain multiple threads

  4. Thread • It is a lightweight process, a single sequentially executed stream of instructions • Properties • Shares address space with other threads • Communicate via shared access to data • Multiple threads in process execute same program

  5. Need for Multithreading • Speed up the computation • Two threads each solve half of the problem and them combine their results • Speedup happens only on multiprocessors • Faster Response • One thread computes while another handles user interface • One thread loads an image from Internet while another performs computation • Performing multiple tasks simultaneously • One thread does garbage collection while other performs computation • Several thread performs animation simultaneously

  6. Programming with Threads • Concurrent programming • Writing programs divided into independent tasks • Tasks may be executed in parallel on multiprocessors • Multithreading • Executing program with multiple threads in parallel • Special form of multiprocessing

  7. Multithreading Single Thread Two Thread

  8. Thread Support in Java • Two approaches • Thread class • Runnable interface

  9. Thread Class public class Thread extends Object implements Runnable { public Thread(); public Thread(String name); // Thread name public Thread(Runnable R); // Thread  R.run() public Thread(Runnable R, String name); public void run(); public void start(); // begin thread execution ... }

  10. More Thread Class Methods public class Thread extends Object { … public static Thread currentThread() public String getName() public void interrupt() public boolean isAlive() public void join() public void setDaemon() public void setName() public void setPriority() public static void sleep() public static void yield() }

  11. Thread Creations in Java • Thread class • Extend Thread class and override the run method Example public class newThread extends Thread { public void run() { … // code for each thread } } newThread T = new newThread() ;// To create a new thread T.start(); // begin running the new thread … // thread executing in parallel

  12. Thread Creations in Java • Runnable interface • Create object implementing Runnable interface • Pass it to Thread object via Thread constructor Example public class newThread implements Runnable { public void run() { … // code for each thread } } Thread T = new Thread(new newThread); // To create a new thread T.start(); // begin running the new thread … // thread executing in parallel

  13. Thread Creations in Java • Runnable is interface • So it can be multiply inherited • Required for multithreading in applets

  14. Thread States • Java thread can be in one of these states • New – thread allocated & waiting for start() • Runnable – thread can begin execution • Running – thread currently executing • Blocked – thread waiting for event (I/O, etc.) • Dead – thread finished • Transitions between states caused by • Invoking methods in class Thread • new(), start(), yield(), sleep(), wait(), notify()… • Other (external) events • Scheduler, I/O, returning from run()…

  15. Thread States • State diagram start new notify, notifyAll, IO complete, sleep expired, join complete new runnable yield, time slice scheduler running blocked IO, sleep, wait, join terminate dead

  16. Thread Types • Java threads types • User • Daemon • Provide general services • Typically never terminate • Call setDaemon() before start() • Program termination • All user threads finish • Daemon threads are terminated by JVM • Main program finishes

  17. Thread – Scheduling • Scheduler • Determines which runnable threads to run • Can be based on thread priority • Part of OS or Java Virtual Machine (JVM) • Scheduling policy • Nonpreemptive (cooperative) scheduling • Preemptive scheduling

  18. Non-preemptive Scheduling • Threads continue execution until • Thread terminates • Executes instruction causing wait (e.g., IO) • Thread volunteering to stop (invoking yield or sleep)

  19. Preemptive Scheduling • Threads continue execution until • Same reasons as non-preemptive scheduling • Preempted by scheduler

  20. Java Thread Example public class newThread extends Thread { public void run() { for (int i = 0; i < 3; i++) System.out.println(i); try { sleep((int)(Math.random() * 8000)); // 8 secs } catch (InterruptedException e) { } } public static void main(String[] args) { new newThread().start(); new newThread().start(); System.out.println(“Finished"); } }

  21. Java Thread Example – Output • Possible outputs • 0,1,2,0,1,2,Done // thread 1, thread 2, main() • 0,1,2,Done,0,1,2 // thread 1, main(), thread 2 • Done,0,1,2,0,1,2 // main(), thread 1, thread 2 • 0,0,1,1,2,Done,2 // main() & threads interleaved

  22. Thread Synchronization • To solve the problem of race condition (data races) • Two ways in Java • Synchronized methods • Synchronized statements

  23. Summary • Thread is a lightweight process • Faster in execution • Saves memory • Reduces the response time • Scheduling a big problem

More Related