Java线程

线程的状态:
新创建(NEW)、可运行(RUNNABLE)、阻塞(BLOCKED)、等待(WAITING)、计时等待(TIME_WAITING)、被终止(TERMINATED)。5个状态。
中断线程:
方法1:
interrupt()//这个方法是请求终止线程的,并不是强制性的,(stop方法之前是强制性的现在已经废弃了),当调用这个方法的时候点成的 中断状态 被置位,这是个boolean标志。而每个线程都会不停地检查这个线程来判断这个位来判断线程是否被中断了。
方法2:
可以调用Thread.currentThread().isInterrupted()来判断当前线程是否已经被中断。但是任何对任何已经阻塞的线程(调用sleep和wait会引起线程阻塞)调用这个方法检测中断状态是都会产生InterrupedException异常。
说明:在中断状态已被置位的时候调用sleep(或者其他可中断的方法)不会使其休眠反而会消除掉它的已中断状态并且会触发InterruptedException。
阻塞和等待
什么是阻塞:简单说阻塞是在资源发生争夺的时候后来的进程会进行阻塞。
什么是等待:简单说等待是等前一个的结果。
计时等待:顾名思义就是掐着表等着,或者是接收到适当的通知后等待状态消除。可以产生计时等待的额方法有:Thread.sleep ,Object.wait,Thread.join,Lock.tryLock和Condition.await的计时版。
当一个线程被激活之后会检查是否它的优先权比当前的优先权高,如果是的话调度器就会从当前的运行的线程中挑选一个,剥夺其运行权,选择这个新的线程运行。
线程的死亡:
1:线程的自然死亡就是run()方法运行完毕。
2:由于一个没有捕获到的异常而终止了run()方法而以外死亡。
Java.lang.Thread 中的void join()方法:等待终止指定的线程;void join(long millis):指定millis秒后指定的线程死亡。
3:Thread.State的getState()方法获得线程状态
过时函数:
java.lang.Thread
void stop()手动终止一个线程
void suspend()暂停
void resume()恢复一个线程,在调用suspend()之后调用的。
–本文部分观点来自java核心技术第九版和Java编程思想第四版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值