A Safe Way to Stop a Java Thread

A Safe Way to Stop a Java Thread

The Thread.stop() method is unsafe and thus deprecated. If the thread being stopped was modifying common data, that common data remains in an inconsistent state.

A better way would be to have a variable indicating if the thread should be stopped. Other threads may set the variable to make the thread stop. Then, the thread itself may clean up and stop.

Consider the basic example shown below. The thread MyThread will not leave common data in an inconsistent state. If another thread calls the done() method for MyThread while MyThread is modifying data, MyThread will finish modifying the data cleanly before exiting.

public class MyThread extends Thread {    private boolean threadDone = false;    public void done() {        threadDone = true;    }    public void run() {        while (!threadDone) {            // work here            // modify common data        }    }}

Note that this method does not eliminate concern about synchronization.

See also  Comparing different methods of testing your Infrastructure-as-Code

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist