Java笔记 - 多线程的安全问题
来源:互联网 发布:虚拟光驱软件免费版 编辑:程序博客网 时间:2024/06/05 23:46
多线程运行可能出现的安全问题原因:
当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来执行,导致共享数据的错误。
解决办法:
对多条操作共享数据的语句,只能让一个线程都执行完。在执行过程中,其它线程不可以参与执行。
Java对于多线程的安全问题提供了专业的解决方式,就是同步代码块:
synchronized(对象){
需要被同步的代码
}
对象如同锁。持有锁的线程可以在同步中执行。
没有持有锁的线程即使获取cpu的执行权,也进不去,因为没有获取锁。
同步的前提:
1、必须要有两个或者两个以上的线程
2、必须是多个线程使用同一个锁,必须保证同步中只能有一个线程在运行
好处:解决了多线程的安全问题
弊端:多个线程需要判断锁,较为消耗资源
class Ticket implements Runnable{private int tick = 100;Object obj = new Object();public void run(){while(true){synchronized(obj){if(tick>0){try{Thread.sleep(10);}catch(Exception e){};System.out.println(Thread.currentThread().getName()+"...sale: " + tick--);}}/*if(tick>0){try{Thread.sleep(10);}catch(Exception e){};System.out.println(Thread.currentThread().getName()+"...sale: " + tick--);}*/}}}public class TicketDemo {public static void main(String[] args){Ticket t = new Ticket();Thread t1 = new Thread(t);Thread t2 = new Thread(t);Thread t3 = new Thread(t);Thread t4 = new Thread(t);t1.start();t2.start();t3.start();t4.start();}}
0 0
- Java笔记 - 多线程的安全问题
- java笔记之java多线程的安全问题
- Java 多线程的安全问题
- 学习笔记--java基础--多线程中出现的安全问题
- (47)Java学习笔记——多线程 / 线程的安全问题
- 【我的Java笔记】多线程安全问题 & 同步机制
- java 学习-----多线程的安全问题
- java基础-多线程的安全问题
- 《黑马程序员》java笔记->多线程安全问题
- java多线程(6)--多线程的安全问题总结
- 多线程(多线程的安全问题)
- java多线程操作共享数据的安全问题
- Java基础——多线程的安全问题
- java中多线程的安全问题以及解决办法
- Java——多线程存在的安全问题
- java多线程之多线程的线程安全问题
- Java笔记3 多线程<1>线程概述、多线程的创建、多线程的安全问题、静态同步函数的锁、死锁
- Java多线程学习笔记(一)——Java的非线程安全问题
- Evaluate Postfix Expression
- String基本用法
- 飞行控制系统中速度的表示
- BZOJ 3160 万径人踪灭【FFT+manacher
- 论文笔记 A Large Contextual Dataset for Classification,Detection and Counting of Cars with Deep Learning
- Java笔记 - 多线程的安全问题
- apache mina2 用户指南(十五)代理
- Java网络编程(三) UDP通信
- 滴滴出行 2017 软件开发 面试
- nginx+tomcat+memcache----3 memcache
- UVA, 10336 Rank the Languages
- [LeetCode]--8. String to Integer (atoi)
- 计算 TPS,QPS
- 第一期资料