线程的生命周期

线程安全问题
模拟多窗口卖票的程序中,会出现重票、票号错误的问题,导致该问题的原因是某个线程操作共用数据的过程中,其它线程也参与进来操作数据

解决线程安全问题
当一个线程,在操作共用数据时,其它线程不能参与进来,直到该线程数据操作完成,其它线程才能参与数据的操作
>方法一:使用关键字synchronized修饰同步代码块

锁:任何一个类的对象都可以充当锁(要求:多个线程共用同一把锁,即该对象唯一)
程序执行结果

>方法二:使用关键字synchronized修饰同步方法,同步方法的方法体只包含操作共享数据的代码块(不需要显示声明同步构造器)


>方法三:使用Lock锁(JDK5新增)
通过显示定义同步锁对象来实现同步,使用Lock对象充当,每次只允许一个线程对Lock对象加锁
程序执行结果

线程死锁问题
不同的线程分别占用对方需要的同步资源不释放,都在等待对方释放自己需要的同步资源,就形成了死锁问题
程序执行结果

注意:程序线程的死锁问题,执行时,并不会出现异常,但会出现线程的堵塞问题
JDK5新增的两种创建线程的方式
创建一个类实现Callable接口,实现接口中的call( )方法,call( )方法可以有返回值(支持泛型返回值),也可以抛出相应的异常
创建接口实现类的对象,FutureTask类实现了Runnable接口和Future接口,通过Thread开启线程
使用线程池,提高了响应速度,降低资源损耗
程序运行结果

实用青年

文章转载自初始化,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Java萌新修炼手册⑥:面向对象の修仙奥义——从"散修"到"宗门大佬"的基因飞升!
让天下没有难学的编程
35次阅读
2025-04-25 10:10:40
Java数据库连接池学习
淡定
31次阅读
2025-04-14 22:46:26
从 Java 到 Go:面向对象的巨人与云原生的轻骑兵
京东云开发者
27次阅读
2025-04-25 11:41:37
Java萌新修炼手册⑤:数组の千层套路——从"鸽子笼"到"摩天楼"的进阶之路!
让天下没有难学的编程
26次阅读
2025-04-25 10:10:41
Java萌新修炼手册②:Hello Worldの108种写法——从入门到入坟!
让天下没有难学的编程
25次阅读
2025-04-21 10:34:36
Java萌新修炼手册④:流程控制の三十六计——让代码学会"见风使舵"!
让天下没有难学的编程
21次阅读
2025-04-23 14:33:55
java浅拷贝BeanUtils.copyProperties引发的RPC异常
京东云开发者
16次阅读
2025-04-30 17:10:50
Java萌新修炼手册①:开局一把JDK,环境搭建全靠浪!
让天下没有难学的编程
16次阅读
2025-04-21 10:34:37
Java程序使用预处理语句的性能提升
GreatSQL社区
14次阅读
2025-04-23 11:18:50
面试官:Java反射和new效率对比,差距有多大?
捡田螺的小男孩
14次阅读
2025-04-13 10:34:43