标签:color ati runnable waiting cat other work http 并行
API:
java.lang.Thread
java.lang.Runnable
一,中断线程
可以调用interrupt()方法发送中断请求。但是,如果线程被阻塞,就无法检测中断状态。这是产生InterruptedException异常的地方。当在一个被阻赛的线程(调用sleep或wait)上调用interrupt方法时,阻塞调用将会被InterruptedException中断。
发出中断请求并不意味着线程立即会终止,发送请求只是要引起线程注意,要求中断的线程可以决定如何处理这个中断请求。某些线程会处理完异常后,继续执行,而不理会中断。但是更普遍的情况是,线程将简单地将中断作为一个终止的请求。即如下代码:
public void run() { try { ... while(!Thread.currentThread().isInterrupted() && more work to check) { do more work; } } catch (InterruptedException ex) { // Thread was interrupted during sleep or wait; } finally { //cleanup, if required; } // exiting the run method terminates the thread }
如果在线程调用sleep方法后,isInterrupted检测没有必要也没用。如果在中断状态调用sleep方法,它也不会休眠。相反,它将清除这一状态并抛出InterruptedException。
二,线程状态
1,新创建线程
new Thread(r), 当一个线程处于新建状态时,程序还没有开始运行线程中的代码。
2,可运行线程
一旦调用start方法,线程处于runnable状态。一个可运行的线程可能正在运行也可能没有运行。
一旦一个线程开始运行,它不必始终保持运行。抢占式调度系统给每一个可运行线程一个时间片来执行任务,当时间片用完,操作系统剥夺该线程的运行权,并给另一个线程运行机会。
3,被阻塞线程和等待线程
当线程处于被阻塞或等待状态时,它暂时不活动。
进入被阻塞或等待状态的情况:
标签:color ati runnable waiting cat other work http 并行
原文地址:http://www.cnblogs.com/IvySue/p/6803259.html