1.线程状态
新生状态->就绪状态->运行状态->死亡状态
注:
1.线程死亡后不能重新开启
2.线程阻塞后进入就绪状态
注:
1.每个线程new一个对象后,都有自己的工作空间,一个工作空间匹配一个线程
2.进入就绪状态的四种方法:start方法,阻塞接触,yield方法,jvm将cpu从本地线程切换到其他线程
3.进入阻塞状态的四种原因:sleep,wait,join,io等操作
4.进入死亡状态的2种原因:代码执行结束,线程强制结束(stop/destory)
2.线程方法
1.sleep():
使线程停止运行一段时间,将处于阻塞状态
如果调用了sleep方法之后,没有其他等待执行的进程,这个时候当前线程不会马上回复执行
2.join():
阻塞指定线程等到另一个线程完成以后再继续执行
3.yield():
让当前正在执行线程暂停,不是阻塞线程,而是将线程转入就绪状态
调用了yield方法之后,如果没有其他等待执行的线程,此时当前线程就会马上恢复执行
4.setDaemon():
可以将指定的线程设置程后台线程,守护线程
创建用户线程的线程结束时,后台线程也随之消亡
只能在线程启动之前把它设为后台线程
5.setPriority(int newPriority) getPriority():
线程的优先级代表的是概率
范围从1到10,默认为5
6.stop():
不推荐使用
3.线程停止
不使用JDK提供的stop()/destory()
提供一个boolean型的终止变量,当这个变量置为false,则终止线程运行
例:
4.线程暂停
sleep(时间)指定当前线程阻塞的毫秒数
sleep存在异常InterruptedException
sleep时间达到后线程进入就绪状态
sleep可以模拟网络延时,倒计时等
每一个对象都有一个锁,sleep不会释放锁
例: