Java 学习笔记之 Sleep停止线程
Posted AK47Sonic
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 学习笔记之 Sleep停止线程相关的知识,希望对你有一定的参考价值。
Sleep停止线程:
在Sleep状态下被interrupt,interrupted 状态会被擦除,返回false。
线程在Sleep状态下被interrupt:
public class SleepInterruptThread extends Thread{ @Override public void run() { try { System.out.println("run begin"); Thread.sleep(2000000); System.out.println("run end"); } catch (InterruptedException e) { System.out.println("Interrupt in sleep stage. Interrupted status: " + this.isInterrupted()); e.printStackTrace(); } } } public class ThreadRunMain { public static void main(String[] args) { testSleepInterruptThread(); } public static void testSleepInterruptThread(){ try { SleepInterruptThread sit = new SleepInterruptThread(); sit.start(); Thread.sleep(1000); sit.interrupt(); } catch (InterruptedException e) { System.out.println("Main catch"); e.printStackTrace(); } System.out.println("end!"); } }
运行结果:
线程在Sleep之前被interrupt:
public class BeforeSleepInterruptThread extends Thread{ @Override public void run() { try { for (int i=0;i<100000;i++){ System.out.println("i="+(i+1)); } System.out.println("run begin"); Thread.sleep(2000000); System.out.println("run end"); } catch (InterruptedException e) { System.out.println("First interrupt, then sleep. Interrupted status: " + this.isInterrupted()); System.out.println("First interrupt, then sleep. Interrupted status: " + Thread.interrupted()); e.printStackTrace(); } } } public class ThreadRunMain { public static void main(String[] args) { testBeforeSleepInterruptThread(); } public static void testBeforeSleepInterruptThread(){ try { BeforeSleepInterruptThread bsit = new BeforeSleepInterruptThread(); bsit.start(); Thread.sleep(100); bsit.interrupt(); System.out.println("end!"); } catch (InterruptedException e) { e.printStackTrace(); } } }
运行结果:
以上是关于Java 学习笔记之 Sleep停止线程的主要内容,如果未能解决你的问题,请参考以下文章
java之yield(),sleep(),wait()区别详解-备忘笔记(转)
Java多线程学习笔记— “Thread类三个方法:线程休眠sleep()线程礼让yield()线程强制执行join()”