[javaSE] 多线程(守护线程)
2023-02-18 15:47:12 时间
我们一般使用多线程,都是while的死循环,想要结束线程,只需退出死循环即可
当线程中调用了sleep()方法或者wait()方法,当前的线程就会进入冻结状态,这个线程就结束不了
调用Thread对象的interrupt()方法,可以强制解冻,此时run()方法中需要捕获到InterruptException异常,然后进行处理,就可以关闭线程了
调用Thread对象的setDaemon()方法,参数:true
守护线程是后台线程,当前台线程全都结束以后,后台线程自动结束
class Ticket implements Runnable { private int nums = 100; @Override public void run() { while (true) { synchronized (this) { if (nums > 0) { try { Thread.sleep(100); } catch (Exception e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "===" + (nums--)); }else{ break; } } } } } public class TicketDemo { /** * @param args */ public static void main(String[] args) { Ticket ticket = new Ticket(); Thread t1=new Thread(ticket); Thread t2=new Thread(ticket); t1.setDaemon(true); t2.setDaemon(true); t1.start(); t2.start(); //主线程执行1秒就结束,其他守护线程还没走完也会结束 while(true){ try { Thread.sleep(1000); break; } catch (Exception e) { e.printStackTrace(); } } } }
相关文章
- 记一次知名地信企业投标数据清洗
- 讯飞听见SaaS服务迈入全新时代
- Base64转amr音频文件
- Dockerfile介绍及常用保留指令
- 胞葬作用 (Efferocytosis) :程序性死亡细胞临终前最后一站 - MedChemExpress
- Java和vue开发的橱柜定制系统家具定制系统
- java和vue的学生健康管理系统疫情打卡系统
- 敏捷价值流管理
- DearMob iPhone Manager for Mac(iPhone手机数据加密传输软件) 6.1中文版
- 慕了,我要是早点看到这篇写 Kafka 的分区管理的文章就好了
- Aiseesoft Mac Blu-ray Player for mac(全高清最佳音质的蓝光播放器) 6.6.26免激活版
- iMedia Cutter多影剪辑 for Mac(音视频剪辑工具)v5.6.7激活版
- Java并发编程(实战):如何解决可见性和有序性问题
- 阿里开发人员献礼“Java架构成长笔记”,深入内核,拒绝蒙圈
- 创新!京东T7开创“新算法宝典”,图文并茂,全新演绎,太酷了
- 神经干细胞移植 “逆转” 神经损伤 - MedChemExpress
- Zabbix与乐维监控对比分析(五)——可视化篇
- Cortex-A55核心板的温升实测!
- 大数据必学Java基础(一百零九):过滤器的使用
- 解读JVM级别本地缓存Caffeine青出于蓝的要诀3 —— 讲透Caffeine的数据驱逐淘汰机制与用法