1 / 18

Today’s Agenda

Today’s Agenda. Quick Review Finish Java Threads The CS Problem. Quick Review. What are the two approaches to creating Java threads?. Java Threads. Thread Creation Thread Synchronization Thread States And Scheduling Short Demo. Thread Creation.

parson
Download Presentation

Today’s Agenda

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. Today’s Agenda • Quick Review • Finish Java Threads • The CS Problem Advanced Topics in Software Engineering 1

  2. Quick Review • What are the two approaches to creating Java threads? Advanced Topics in Software Engineering 2

  3. Java Threads • Thread Creation • Thread Synchronization • Thread States And Scheduling • Short Demo Advanced Topics in Software Engineering 3

  4. Thread Creation • There are two ways to create a thread in Java: • Extend the Thread class • Implement the Runnable interface Advanced Topics in Software Engineering 4

  5. The Thread class • classAextendsThread { • public A (String name) { super (name); } • publicvoid run () { • System.out.println(“My name is ” + getName()); • } • } • classB { • publicstaticvoid main (String [] args) { • A a = newA (“mud”); • a.start (); • } • } Advanced Topics in Software Engineering 5

  6. The Runnable interface • classAextends ... implementsRunnable { • publicvoid run () { • System.out.println(“My name is ” + getName () ); • } • } • classB { • publicstaticvoid main (String [] args) { • A a = newA (); • Thread t = newThread (a, “mud, too”); • t.start (); • } • } Advanced Topics in Software Engineering 6

  7. Java Threads • Thread Creation • Thread Synchronization • Thread States And Scheduling • Short Demo Advanced Topics in Software Engineering 7

  8. Lock • Each Java object is implicitly associated with a lock. • To invoke a synchronized method of an object, a thread must obtain the lock associated with this object. • The lock is not released until the execution of the method completes. • The locking mechanism ensures that at any given time, at most one thread can execute any synchronized method of an object. • Important: Lock is per object (NOT per method)! Advanced Topics in Software Engineering 8

  9. wait, notify and notifyAll • The execution of wait on an object causes the current thread to wait until some other thread to call notify or notifyAll. • A thread must own the object lock before it invokes wait on an object. The execution of wait will also release the lock. • When a waiting thread is notified, it has to compete and reacquire the object lock before it continues execution. • What’s the difference between notify and notifyAll? Advanced Topics in Software Engineering 9

  10. join • A thread t1 can wait until another thread t2 to terminate. t2 t1 t2.join () end Advanced Topics in Software Engineering 10

  11. interrupt • interrupt allows one thread to send a signal to another thread. • It will set the thread’s interrupt status flag, and will throw a ThreadInterrupted exception if necessary . • The receiver thread can check the status flag or catch the exception, and then take appropriate actions. Advanced Topics in Software Engineering 11

  12. Other Thread methods • Methodsleep puts the running thread into sleep, releasing the CPU. • Method suspend suspends the execution of a thread, which can be resumed later by another thread using method resume. • Method stop ends the execution of a thread. • Note that suspend, resume, and stop has been deprecated in Java 2. (For more info, refer to http://java.sun.com/j2se/1.4.1/docs/guide/misc/threadPrimitiveDeprecation.html.) Advanced Topics in Software Engineering 12

  13. Daemon Thread • A daemon thread is used to perform some services (e.g. cleanup) for other threads. • Any thread can be marked as a daemon thread using setDaemon (true). • A program terminates when all its non-daemon threads terminate, meaning that daemon threads die when all non-daemon threads die. Advanced Topics in Software Engineering 13

  14. Java Threads • Thread Creation • Thread Synchronization • Thread States And Scheduling • Short Demo Advanced Topics in Software Engineering 14

  15. CS, yield start scheduled new suspended runnable blocked running dead suspend suspend IO completes, sleep expires, notify, notifyAll, join completes resume IO, sleep wait, join stop resume stop suspend IO completes stop suspend blocked stop stop, run ends State Transition Diagram Advanced Topics in Software Engineering 15

  16. Scheduling • In general, there are two types of scheduling: non-preemptive scheduling, and preemptive scheduling. • In non-preemptive scheduling, a thread runs until it terminates, stops, blocks, suspends, or yields. • In preemptive scheduling, even if the current thread is still running, a context switch will occur when its time slice is used up. Advanced Topics in Software Engineering 16

  17. Priorities • Each thread has a priority that also affects their scheduling to run. • If a thread of a higher priority enters the runnable set, the currently running thread will be preempted by the new thread. Advanced Topics in Software Engineering 17

  18. Java Threads • Thread Creation • Thread Synchronization • Thread States And Scheduling • Short Demo Advanced Topics in Software Engineering 18

More Related