首页 > 代码库 > 线程安全问题
线程安全问题
前面的一个例子 多窗口买票实例 存在的线程安全问题描述如下:
当线程1等待到了 CPU 资源后,执行 run(),判断条件为 true,但是不会立刻执行输出语句(阻塞),此时 CPU 控制权有可能被移交给线程2或线程3,假如真的被移交,那么可能出现输出余票数为-1、-2的情况,为避免这种线程安全问题,有必要实行一种制度来让当前线程执行的每个单次循环都执行完才让出 CPU。
更进一步的描述:
由于一个线程操作共享数据过程中,在未执行的情况下,另外的的线程参与进来,导致共享数据存在安全问题。因此有必要让一个线程操作共享数据完毕后,其他线程才有机会参与共享数据的操作。
解决办法:
- Java 的线程同步机制:同步方法、同步代码块
- 锁(JDK 5.0之后加入的新机制)
线程安全问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。