实训之--线程
线程的知识。无非线程的生命周期;线程状态;以及线程在java中的操作方法;线程的分类
一、线程的生命周期:
1、新建状态(New):start().新创建了一个线程对象。
2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU的使用权。即在就绪状态的进程除CPU之外,其它的运行所需资源都已全部获得。
3、运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。
4、阻塞状态(Blocked):sleep(), wait()阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。
5. 终止:stop().
二、生命周期图:
三、操作方法
1.Thread.getcurrentThread.getName()线程名称
2.wait().sleep 阻塞操作
3.构造Thread(Runnable,threadname)创建线程
4.setName,getName()
5.getPriority() setPriotity(Min/max)取得,设置线程的优先级。
一般就这几种放方法。
四。线程分类:守护线程,用户线程
一切以非守护线程为主:在jvm中,只有非守护线程结束工作,守护线程才能停止。
说白了就是,我创了个MyThread1,只有它运行完成,stop()之后,主线程/守护线程的 比如垃圾回收线程,计数器线程才能结束。
我原来想模拟一下,让Mythread和主线程中的a()方法进行竞争输出,应为它们的setProity都一样,结果不可能,因为,守护线程总是先启动,不在一个起跑线,如何竞争,哈哈。