【Java高级】线程安全及线程通信
Thread类
补充上面多线程的方法
Thread类的构造方法

Thread类常用方法

参考代码
1 | package com.itheima.demo01_Thread; |
多线程安全问题
概述
- 多线程安全就是当多个线程操作共享资源的时候,出现的逻辑错误,就是安全问题;我们应该通过技术手动避免这种问题的发生!
产生原因
- 有多线程;
- 有共享数据;
- 有数据修改;
解决的思路
- 让多个线程”排队操作共享数据”即可;
取款案例思路分析

取款案例代码实现(出现安全问题)
1 | /* |
取款案例的安全问题分析

同步代码块
- 概述
- 通过关键字synchronized配合一个唯一的锁对象,可以把需要”排队”执行的代码块包裹起啦,从而保证多线程的安全执行;
参考代码
1 | /* |
注意事项
- 一般使用资源对象当成锁对象;
- 必须保证锁对象要唯一,否则无效!
同步方法
- 概述
- 当同步代码块中所有的代码刚好在某个方法内完成的时候,为了增强代码的可读性,可以把整个方法加上 synchronized;
参考代码
1 | /* |
Lock接口
- 概述
- lock接口是对synchronized的优化,可以保证既能锁定的代码范围灵活,也能保证代码的可读性;但是不能自动释放锁,所以为了保证释放锁的行为一定要执行,需要使用 try{}finally{}代码块把释放锁的行为放在 finally中完成;
参考代码
1 | /* |
线程通信
概述
- 就是多个线程在操作共享资源的时候,可以相互通信,根据不同线程的状态,协调完成任务 ;
通信相关的方法

注意事项
只有锁对象,才能调用上面的方法,否则出异常;
包子案例的思路分析

包子案例的代码实现
共享资源类
1 | /* |
厨师任务类
1 | /* |
吃货任务类
1 | /* |
测试类
1 | /* |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.


