线程的操作

线程的操作

线程的挂起及恢复

​ 什么是线程的挂起?

​ 线程的挂起操作实质上是让线程进入“不可执行”的状态下,在这个状态下,CPU不会给线程分配时间片,以达到让线程暂停当前的任务。

​ 线程被挂起后,可以通过唤醒线程来让它继续运行

​ 为什么要挂起线程

​ 为了避免资源的浪费。当我们不看电视的时候,就把电视关掉,这样是为了省电,同理,当自己当前状况不用线程的时候就将其挂起,暂停它当下的状态,以达到方便使用节约资源的目的

​ 如何挂起线程?

​ suspend():挂起线程,已废弃,原因是挂起后不能释放资源,而且不易控制,资源占用进而会引发死锁

​ resume():和上面的suspend()方法共同使用,以唤醒线程,但是因为和suspend()方法绑定所以一起被废弃了

​ wait():线程挂起,放弃现有的锁(释放资源),进入等待状态

​ notify():随机唤醒线程,让唤醒的线程去占用资源执行任务

​ notifyAll():唤醒全部线程,让所有线程抢占资源

线程的中断

​ 怎么去中断一个线程的执行?

​ stop():已废弃,过于强力,一调用就立刻终止

​ interrupt():可以自行定义,用来判断是否可以继续执行

线程的优先级

​ 线程的重要性决定了线程的优先级,我们在编程中可以为线程设置优先级来决定这个线程的执行,优先级高的线程,CPU会多分配一些时间片,优先级低的少分配一下时间片,使其执行靠程序开发来决定,所以当线程堵塞时,优先级高的线程会优先执行,但是这并不表示优先级低的线程就不会执行,只不过比优先级低的线程执行的机会小。比如说,线程1优先级最高,线程2优先级最低,同时执行循环输出名字时线程1的数量明显比线程2多,但是线程2依然存在,只是相对而言数量较小。

​ 线程的优先级可以设置为1-10,超出这个界限就会报错,源码中有三个优先级常量,MIN_PRIORITY=1、NORM_PRIORITY=5、MAN_PRIORITY=10,数值越高优先级越高,默认为5

public static void main(String[] args) {
		Thread thread = new Thread();
    //设置线程优先级
		thread.setPriority(Thread.MAX_PRIORITY);
	}

守护进程

什么是守护线程?

​ 相对于用户线程,相当于整个程序中用户线程的守护者,执行后直到最后一个非守护线程结束才会随着jvm一起退出。

​ 注意:

​ 1.因其不可控,所以尽量不要用

​ 2.不在守护线程中进行读写操作,执行逻辑

public static void main(String[] args) {
		Thread thread = new Thread();
		//守护线程默认关闭,开启需要为true
		 thread.setDaemon(true);
		 //守护线程要在线程开启之前开启,否则会报错
		 thread.start();
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值