多线程-2
JAVA线程
线程的状态
new:线程刚被创建,尚未被启动(即还没被.start())
Runnable:可运行状态
Blocked:锁状态
Waiting:等待状态(无限等待)
TimeWaiting:计时等待
Terminal:死亡,run()方法执行完就可以认为线程死亡。

线程的中断
public static void main(String[] args) throws InterruptedException { //线程阻塞(所有比较消耗时间的操作) //线程中断 //一个线程是一个独立的执行路径,它是否应该结束,由自身决定 Thread t1 = new Thread(new MyRunnable()); t1.start(); for(int i=0;i<5;i++){ System.out.println("Main"+i); Thread.sleep(1000); } //给线程添加中断标记 t1.interrupt();//只是告知你要死亡 } static class MyRunnable implements Runnable { @Override public void run() { for(int i=0;i<10;i++){ System.out.println(Thread.currentThread().getName()+':'+i); try { Thread.sleep(1000); } catch (InterruptedException e) { //是否死亡由此代码块决定 // e.printStackTrace(); System.out.println("线程死亡!"); return; } } } }
结果
Main0 Thread-0:0 Main1 Thread-0:1 Main2 Thread-0:2 Main3 Thread-0:3 Main4 Thread-0:4 线程死亡!
等Main方法执行完毕以后,通过interrupt()方法告知线程应该死亡。是否死亡看自身需求。
守护线程
线程分为守护线程和用户线程
守护线程:顾名思义,守护用户线程,当最后一个用户线程执行完毕它才随之消失,自动死亡。
用户线程:当一个进程不包含任何存活的用户线程时,进程结束,即软件结束。
如何设置守护线程
1 Thread t1 = new Thread(new MyRunnable()); 2 //在启动之前设置 3 t1.setDaemon(true); 4 t1.start();
---------------------------------------------------------------------------------
作者:PuPile
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个无耻的文档搬运工!

浙公网安备 33010602011771号