Interrupting Threads In Java

In a Java application, a thread may keep waiting for a long time after executing wait() or Thread.join() or by put() or take() methods of a BlockingQueue. We also refer such a thread as a blocked thread since it remains blocked until some operation is performed. Sometimes a thread can also be blocked for a certain time by Thread.sleep(). When a thread is blocked for a long time you may need to take the thread out of the WAITING or TIMED_WAITING state. While writing a Java application, we need to take care that a thread does not remain blocked for too long. The corrective action that needs to be performed in such circumstances depends on the type of task the thread is executing. If the task is cancellable, it is simply aborted and if it is not cancellable then a logic needs to be implemented to enable its execution.

Topics: Java NIO ReentrantLock Runnable Java ExecutorService Callable Thread Multithreading BlockingQueue InterruptibleChannel Future Technology Thread Interrupt

Limitations of intrinsic lock and solution

Java SE 5.0 introduced classes for locking called as Lock API. They are part of java.util.concurrent.locks package. Until then, only synchronized methods and synchronized blocks were available for locking.

Topics: ReentrantLock ReentrantReadWriteLock lock fairness Java ReadWriteLock Lock API intrinsic lock Multithreading monitor lock Technology

e-Zest Solutions is digital experience engineering company with facilities in the United States (Detroit & San Jose), Germany (Hannover), United Kingdom (London UK) and India (Pune) with global clientele. Our services include custom software development, offshore software development, UX consulting, BigData, Managed cloud Services (Azure & AWS), SharePoint consulting/Migration, Enterprise Java application development, Automated software testing services.