The TERMINATED state

A thread that successfully finishes its job or is abnormally interrupted is in the TERMINATE state. This is very simple to simulate, as in the following snippet of code (the main thread of the application prints the state of the thread, t—when this is happening, the thread, t, has done its job):

public class TerminatedThread {

public void terminatedThread() {
Thread t = new Thread(() -> {});
t.start();

Thread.sleep(1000);

System.out.println("TerminatedThread t: "
+ t.getState()); // TERMINATED
}
}

TerminatedThread tt = new TerminatedThread();
tt.terminatedThread();

In order to write thread-safe classes, we can consider the following techniques:

  • Have no state (classes with no instance and static variables)
  • Have state, but don't share it (for example, use instance variables via Runnable, ThreadLocal, and so on)
  • Have state, but an immutable state
  • Use message-passing (for example, as Akka framework)
  • Use synchronized blocks
  • Use volatile variables
  • Use data structures from the java.util.concurrent package
  • Use synchronizers (for example, CountDownLatch and Barrier)
  • Use locks from the java.util.concurrent.locks package
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
52.15.56.12