线程的五个状态图解:![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fee607a456081e6a3b9a962fbf09188d.png#pic_center)
线程的方法
- setPriority(int newPriority) 更改线程的优先级
Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度
器按照优先级决定应该调度哪个线程来执行。
线程的优先级用数字表示,范围从1~10. u Thread.MIN_PRIORITY = 1;
Thread.MAX_PRIORITY = 10;
Thread.NORM_PRIORITY = 5;
使用以下方式改变或获取优先级
getPriority() . setPriority(int xxx)
- static void sleep(long millis) 在指定的毫秒数内让当前正在执行的线程休 眠
sleep (时间) 指定当前线程阻塞的毫秒数;
sleep存在异常InterruptedException;
sleep时间达到后线程进入就绪状态;
sleep可以模拟网络延时,倒计时等。
每一个对象都有一个锁,sleep不会释放锁;
- void join() 等待该线程终止
- static void yield() 暂停当前正在执行的线程对象,并执行其他线程
- void interrupt() 中断线程,别用这个方式
- boolean isAlive() 测试线程是否处于活动状态
- Thread.State 查询当前线程状态
停止线程
- 一般都不用stop方法,destroy()方法,已经废弃,推荐使用标识符,如当flag=false时,停止
守护(daemon)线程
-
java中有两种线程,一种时用户线程,一种时守护线程 JVM不会管守护线程,当用户线程执行完,守护线程没有了需要守护的对象,也就结束了
也就是说JVM虚拟机只会确保用户线程执行完,不会等待守护线程执行完用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:
只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。
Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾回收器),它就是一个很称职的守护者。