Java多线程探究-多线程安全问题
来源:互联网 发布:个性婚纱知乎 编辑:程序博客网 时间:2024/06/08 19:32
接着Java多线程买票的程序来说
class MyRunnable implements Runnable{ private int ticket =100; public void run() { while(true){ if(ticket>0){ System.out.println(Thread.currentThread().getName()+"sale "+ticket--); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } }else{ break; } } }}
public class ThreadDemo{ public static void main(String[] args) { Runnable runnable = new MyRunnable(); Thread th1 = new Thread(runnable); Thread th2 = new Thread(runnable); Thread th3 = new Thread(runnable); Thread th4 = new Thread(runnable); Thread th5 = new Thread(runnable); th1.start(); th2.start(); th3.start(); th4.start(); th5.start(); }}
按我们的设计原则,应该是从100到0张打印票数,但是我们来看输出结果
可以看到,线程3和线程2同时卖出了第44张票,显然是不对的,再运行一次可能会打印出-1,-2错票
这就出现了线程共享的安全问题
怎么解决线程安全呢,请看另一篇博客多线程同步
http://blog.csdn.net/daiyutage/article/details/70050996
0 0
- Java多线程探究-多线程安全问题
- java多线程及安全问题
- Java 多线程的安全问题
- java多线程安全问题
- Java多线程--安全问题
- Java多线程安全问题
- java中的多线程安全问题
- Java 多线程 线程安全问题
- Java多线程探究-创建多线程
- Java Tread多线程(2)多线程安全问题
- Java基础-多线程-②多线程安全问题
- java多线程(6)--多线程的安全问题总结
- Java——多线程安全问题
- java 学习-----多线程的安全问题
- java基础-多线程的安全问题
- Java多线程安全问题及解决方案
- Java笔记 - 多线程的安全问题
- Java多线程____线程安全问题
- linux系统延迟及定时机制
- PAT A.1082. Read Number in Chinese (25)
- Java中的equals和==
- JAVA :在给定一个数组中,可以取得多个连续的子串。在众多子串中,求各元素和为最大值的连续子串!
- A*Pathfinding Project学习之【2】插件的使用
- Java多线程探究-多线程安全问题
- java 文件copy
- 【C语言】操作符描述,示例,优先级
- Accelerated C++<4-6>
- 关于 Android 中的 Palette 类的使用案例:色彩自适应的 Toolbar
- spring4
- VC怎么调用ActiveX
- HOJ2000 ASCII码排序
- 使用FrameLayout制作的摇杆控件