1. 线程中的状态转换图如下:
分析如下:
CPU就是一个大大的厕所,所有的线程就好比是上厕所一样。
创建: 这个时候就是创建一个线程对象。
start(): 刚创建的线程对象,对CPU大喊,我要上厕所 。
就绪状态: CPU听到你的话了,但是并不是马上让你上厕所,而是让你去排队,因为厕所里面的茅坑可能不够用。
运行状态: CPU告诉你可以到茅坑位上面解决大便了,这个时候你正在茅坑上,舒服的解决。
阻塞状态:你拉着拉着,却发现没有带纸,所以你必须一直在茅坑上等着,你起不起来,因为你没有擦屁股,所以你要别人送纸给你,让你解除阻塞。
终止:你的大便拉完了,没有什么留恋的了,你就离开厕所了,也就是离开了CPU了。
线程控制的基本方法:
我们简单的测试一下sleep()方法:
项目结构:
package com.niepengfei.test;
import java.util.Date;
public class MyThread extends Thread{
/**
* 每隔一秒钟就是打印当前时间
*/
@Override
public void run() {
boolean flag = true;
while(flag){
System.out.println("***"+ new Date() + "***");
try {
sleep(1000);
} catch (InterruptedException e) {
flag = false;
}
}
}
}
package com.niepengfei.test;
public class TestThread2 {
public static void main(String[] args) {
/**
* 主线程睡眠10秒钟后,会主动打断t2线程,这个时候t2线程就会终止执行
*/
MyThread t2 = new MyThread();
t2.start();
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
t2.interrupt();
}
}
运行结果: