(一)start一个线程
//最常见的创建线程的伪代码如下:
class MyThread extends Thread {
public void run(){
//dosomething
}
public static void main(String[] args){
new MyThread().start();
}
}
但是在任务有很多的的时候就不推荐一这种方式来实现多线程了,因为要为每一个任务创建一个独立的线程开销太大,应该采用线程池来解决这个问题,我下面会详细讲解这个问题。
(二)线程状态
New(新创建)
Runnable(可运行)
Blocked(被阻塞)
Waiting(等待)
Timeed waiting(计时等待)
Terminated(被终止)
getState()可以得到当前状态。
(三)中断一个线程
早期版本中一般是使用stop方法,但是现在已经废弃了,改用interrupt方法。
本想研究一下底层源码,但是发现有太多本地方法了,所以就放弃了,调用interrupt()之后,线程的中断状态会被置位,
要想确认中断状态是否被置位,可以用以下代码:
while(Thread.currentThrad().isInterrupted()){
//被打断之后可以dosomething
}
线程如果被阻塞(调用sleep或者wait)时还调用它的interrupt(),这个时候会抛出InterruptException,线程将会异常中断