终止java线程的2种方法详解编程语言

1、使用一个volatile的共享变量

2、使用interrupt方法

import java.util.concurrent.TimeUnit; 
 
/** 
 * ThreadTest 
 */ 
public class ThreadTest implements Runnable { 
 
    private volatile boolean stop = false; 
 
    @Override 
    public void run() { 
        while (!stop) { 
            System.out.println(Thread.currentThread().getName() + " is running..."); 
            try { 
                TimeUnit.MILLISECONDS.sleep(1000); 
            } catch (InterruptedException e) { 
                System.out.println("wake up from block"); 
                stop = true; 
            } 
        } 
        System.out.println(Thread.currentThread().getName() + " is exiting..."); 
    } 
 
    public static void main(String[] args) { 
        ThreadTest threadTest = new ThreadTest(); 
        Thread t1 = new Thread(threadTest); 
        t1.start(); 
        try { 
            TimeUnit.MILLISECONDS.sleep(3000); 
        } catch (InterruptedException e) { 
            // 
        } 
 
        // 1、使用 volatile共享变量 
        threadTest.stop = true; 
 
        // 2、使用interrupt方法 
        System.out.println("Interrupt thread:" + t1.getName()); 
        t1.interrupt(); 
        try { 
            TimeUnit.MILLISECONDS.sleep(3000); 
        } catch (InterruptedException e) { 
            // 
        } 
        System.out.println("Stopping application..."); 
    } 
 
}

2种可能的运行结果:

Thread-0 is running... 
Thread-0 is running... 
Thread-0 is running... 
Interrupt thread:Thread-0 
Thread-0 is running... 
wake up from block 
Thread-0 is exiting... 
Stopping application...

Thread-0 is running... 
Thread-0 is running... 
Thread-0 is running... 
Interrupt thread:Thread-0 
Thread-0 is running... 
Thread-0 is exiting... 
Stopping application...

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/15888.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论