Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Chapter6 threads

531 views

Published on

computer

Published in: Education, Technology, Business
  • Be the first to comment

  • Be the first to like this

Chapter6 threads

  1. 1. Java2An Introduction to Threads
  2. 2. Objectives Compare Multitasking and Multithreading Define a thread Discuss Benefits of multithreading Explain how to create threads Describe Thread states Discuss Thread priorities Discuss Daemon thread eACCP 2002/Sem 1/ JPL/ Session 6/ 2 of 26
  3. 3. Multitasking Vs Multithreading Multitasking is the ability to run one or more programs concurrently Operating system controls the way in which these programs run by scheduling them Time between switching of programs is minute Multithreading is the ability to execute different parts of a program called threads, simultaneously eACCP 2002/Sem 1/ JPL/ Session 6/ 3 of 26
  4. 4. Thread Smallest unit of executable code that performs a task An application can be divided into multiple tasks and each task can be assigned to a thread Many threads executing simultaneously is termed as Multithreading Although it may appear that the processes are running concurrently, it is not so 1/ JPL/ eACCP 2002/Sem Session 6/ 4 of 26
  5. 5. Benefits of multithreading Multithreading requires less overhead than multitasking  In multitasking, processes run in their own different address space  Tasks involved in multithreading can share the same address space Inter-process calling involves more overhead than inter-thread communication eACCP 2002/Sem 1/ JPL/ Session 6/ 5 of 26
  6. 6. Applications of thread Playing sound and displaying images simultaneously Displaying multiple images on the screen Displaying scrolling text patterns or images on the screen eACCP 2002/Sem 1/ JPL/ Session 6/ 6 of 26
  7. 7. Creating threads (1) When Java programs execute, there is always one thread running and that is the main thread  It is this thread from which child threads are created  Program is terminated when main thread stops execution  Main thread can be controlled through ‘Thread’ objects eACCP 2002/Sem 1/ JPL/ Session 6/ 7 of 26
  8. 8. Creating threads (2) Thread objects can be created in two ways:  Declare a class that is a sub-class of the class Thread defined in java.lang package  class mythread extends Thread  Declare a class that implements the Runnable interface  class mythread implements Runnable While using applets, Thread class cannot be extended. Therefore one has to implement the Runnable interface eACCP 2002/Sem 1/ JPL/ Session 6/ 8 of 26
  9. 9. Creating threads (3) To initiate a new thread, we use the start() method Mythread t = new Mythread(); t.start(); When start() method is invoked, a new thread of control is created It then calls the run() method eACCP 2002/Sem 1/ JPL/ Session 6/ 9 of 26
  10. 10. Creating threads (4) Example 1 – Creating a thread by extending the Thread class Output eACCP 2002/Sem 1/ JPL/ Session 6/ 10 of 26
  11. 11. Creating threads (5) Example2 – Creating a thread by implementing the Runnable interface Output eACCP 2002/Sem 1/ JPL/ Session 6/ 11 of 26
  12. 12. Thread states (1) Born – a newly created thread is in a born state Ready – after a thread is created, it is in its ready state waiting for start() method to be called eACCP 2002/Sem 1/ JPL/ Session 6/ 12 of 26
  13. 13. Thread states (2) Running – thread enters the running state when it starts executing Sleeping – execution of a thread can be halted temporarily by using sleep() method. The thread becomes ready after sleep time expires eACCP 2002/Sem 1/ JPL/ Session 6/ 13 of 26
  14. 14. Thread states (3) Waiting – thread is in waiting state if wait() method has been invoked Blocked – when the thread waits for an Input/Output operation Dead – after the run() method has finished or the threads stop() method is2002/Sem 1/ JPL/ eACCP called Session 6/ 14 of 26
  15. 15. Different thread states New Thread (BORN) READY SLEEPING SUSPENDED RUNNINGWAITING BLOCKED DEADeACCP 2002/Sem 1/ JPL/ Session 6/ 15 of 26
  16. 16. Some methods of thread class (1) isAlive() – returns true if the thread is alive getName() – returns the name of the thread start() – used to start a thread by calling the method run() eACCP 2002/Sem 1/ JPL/ Session 6/ 16 of 26
  17. 17. Some methods of thread class (2) resume() – to resume the execution of a suspended thread yield() – causes the currently executing thread to temporarily pause and allow other threads to execute setName(String name) – sets the name of the thread to the name that is passed as eACCP 2002/Sem 1/ JPL/ argument Session 6/ 17 of 26
  18. 18. Some methods of thread class (3) join() – waits for the thread to die isDaemon() – checks if the thread is a Daemon thread activeCount() – returns the number of active threads sleep() – used to suspend a thread for a certain period of time eACCP 2002/Sem 1/ JPL/ Session 6/ 18 of 26
  19. 19. Conditions preventing thread execution Thread is:  Not of highest priority  Put to sleep using sleep() method  Suspended using suspend() method  Thread is waiting because wait() method was called  Explicitly yielded using yield() method  Blocked for file I/O eACCP 2002/Sem 1/ JPL/ Session 6/ 19 of 26
  20. 20. Managing threads (1) Priorities for carrying out activities changes at times  eg :Planned to visit museum in the afternoon but due to toothache, had to go to doctor Similarly while programming, we may have to run a thread of higher importance without stopping or suspending the current running thread Thread priorities play an important role in such a situation eACCP 2002/Sem 1/ JPL/ Session 6/ 20 of 26
  21. 21. Managing threads (2) Thread priorities in Java are constants defined in the Thread class  NORM_PRIORITY – value is  MAX_PRIORITY – value is  MIN_PRIORITY – value is The default priority is NORM_PRIORITY Two methods used to change priority:  setPriority() - changes the thread’s current priority  getPriority() - returns the thread’s priority eACCP 2002/Sem 1/ JPL/ Session 6/ 21 of 26
  22. 22. Daemon threads (1) Two types of threads in Java:  User threads – created by the user  Daemon threads – threads that work in the background providing service to other threads  e.g. – the garbage collector thread When user thread exits, JVM checks to find out if any other thread is running If the only executing threads are Daemon threads, it exits eACCP 2002/Sem 1/ JPL/ Session 6/ 22 of 26
  23. 23. Daemon threads (2) We can set a thread to be a Daemon if we do not want the main program to wait until a thread ends Thread class has two methods to deal with Daemon threads:  public void setDaemon(boolean value) : sets a thread to be a daemon thread  public void isDaemon() : checks if the given thread is a daemon thread eACCP 2002/Sem 1/ JPL/ Session 6/ 23 of 26
  24. 24. Daemon threads (3)An example Output eACCP 2002/Sem 1/ JPL/ Session 6/ 24 of 26
  25. 25. Session summary (1) When Java programs are executed, there is always one thread that is running and that is the main thread Threads can be used in two ways:  Declare the class to be a sub-class of the Thread class  Declare a class that implements the Runnable interface eACCP 2002/Sem 1/ JPL/ Session 6/ 25 of 26
  26. 26. Session summary (2) Each thread in a Java program is assigned a priority The default priority of a thread that is created is 5 The methods Thread.suspend(), Thread.resume() and Thread.stop() have been deprecated since Java2 The threads providing service to other threads are referred to as daemon threads eACCP 2002/Sem 1/ JPL/ Session 6/ 26 of 26

×