线程状态
来源:互联网 发布:南开创元java 编辑:程序博客网 时间:2024/06/06 08:40
三.线程状态:
新生状态:用new关键字或者Thread类或者子类建立一个线程对象
就绪状态:start方法进入
运行状态:run方法
阻塞状态:让出CPU暂时停止自己的状态
死亡状态:一个是正常运行的线程完成它的全部工作,另一个强制终止(stop或destroy),不推荐
四.停止线程(重点):
1 自然终止,线程正常执行完毕
2 外部干涉
1) 线程类中定义线程体使用的标识
2) 线程体使用该标识
3) 提供对外的方法改变该标识
4) 外部根据条件调用该方法
package thread.status;public class stop {public static void main(String[] args) {Study s = new Study();new Thread(s).start();// 外部干涉for (int i = 0; i < 1000; i++) {if (i == 500) {s.stop();}System.out.println("main....-->" + i);}}}class Study implements Runnable {// 1)线程中定义线程体使用的标识private boolean flag = true;@Overridepublic void run() {// 2)线程体使用该标识while (flag) {System.out.println("studythread...");}}// 3)对外提供方法改变标识public void stop() {this.flag = false;}}
五.线程阻塞
1 join:合并线程
package thread.status;/** * join合并线程 * * @author Administrator * */public class JoinDemo1 extends Thread {public static void main(String[] args) throws InterruptedException {JoinDemo1 demo = new JoinDemo1();Thread t = new Thread(demo);// 新生t.start();// 就绪// cpu调度运行for (int i = 0; i < 1000; i++) {if (i == 50) {t.join();// main方法阻塞}System.out.println("main...." + i);}}@Overridepublic void run() {for (int i = 0; i < 100; i++) {System.out.println("join....." + i);}}}
2 yield:暂停当前正在执行的线程,并执行其他线程。 static
package thread.status;public class yieldDemo1 extends Thread {public static void main(String[] args) throws InterruptedException {yieldDemo1 demo = new yieldDemo1();Thread t = new Thread(demo);// 新生t.start();// 就绪// cpu调度运行for (int i = 0; i < 1000; i++) {if (i % 5 == 0) {// 暂停本线程mainThread.yield();}System.out.println("main...." + i);}}@Overridepublic void run() {for (int i = 0; i < 1000; i++) {System.out.println("join....." + i);}}}
3 sleep:休眠,暂停当前线程,不释放锁
1) 与时间相关:倒计时
2) 模拟网络延时
package thread.status;/** * 倒数十个数,一秒内打印一个 * * @author Administrator * */public class SleepDemo1 {public static void main(String[] args) throws InterruptedException {int num = 10;while (true) {System.out.println(num--);Thread.sleep(1000);// 暂停if (num <= 0) {break;}}}}
0 0
- 线程状态
- 线程状态
- 线程状态
- 线程状态
- 线程状态
- 线程状态
- 线程状态
- 线程状态
- 线程状态
- 线程状态
- 线程状态
- 线程状态
- 线程状态
- 线程状态
- 线程状态
- 线程状态
- 线程状态
- 线程状态
- 判断闰年与否
- Python eval 函数妙用
- LeetCode#279. Perfect Squares
- NC5、6返回数据集开发报表例子:
- 关于jsp页面是放在webroot目录下和web-inf下优缺点
- 线程状态
- Android notification通知
- c++选择语句
- FAL_CLIENT和FAL_SERVER
- 信息专家模式
- linux硬链接与软链接
- c++
- SpringMVC 结果的转发和重定向
- 一些encoder和decoder的资料