Java多线程
Thread的start()与run()方法的区别:
start()方法通知线程规划器,此线程已经准备就绪,等待调用线程对象的run()方法,这个过程其实就是让系统安排一个时间来调用Thread中的run方法,具有异步执行的效果,如果调用代码Thread.run()就不是异步执行,而是同步,那么此线程对象并不交给线程规划器来进行处理,而是由main主线程来调用run()方法,也就是必须等到run()方法中的代码执行完后才能执行后面的代码
线程的停止
异常停止法:
通过方法this.interrupted()可以测试当前线程是否已经是中止状态,在run方法中加入这个判断可以中止线程,但还是会执行后续的代码,所以然后在抛出异常throw new InterruptedException()
示例:
public class ThreadStu extends Thread {
@Override
public void run() {
try {
for (int i = 0; i < 500000; i++) {
if (this.interrupted()) {
System.out.println("已经是停止状态!我要退出 了!");
**throw new InterruptedException();**
}
System.out.println("i =" + (i + 1));
}
System.out.println("end");
} catch (Exception e) {
e.printStackTrace();
}
}
}