Java基础----一个有问题的多线程程序
来源:互联网 发布:手机淘宝闲置区在哪里 编辑:程序博客网 时间:2024/06/13 00:53
package cn.itcast_08;public class SellTicket implements Runnable {// 定义100张票private int tickets = 100;//@Override//public void run() {//while (true) {//// t1,t2,t3三个线程//// 这一次的tickets = 100;//if (tickets > 0) {//// 为了模拟更真实的场景,我们稍作休息//try {//Thread.sleep(100); // t1就稍作休息,t2就稍作休息//} catch (InterruptedException e) {//e.printStackTrace();//}////System.out.println(Thread.currentThread().getName() + "正在出售第"//+ (tickets--) + "张票");//// 理想状态://// 窗口1正在出售第100张票//// 窗口2正在出售第99张票//// 但是呢?//// CPU的每一次执行必须是一个原子性(最简单基本的)的操作。//// 先记录以前的值//// 接着把ticket--//// 然后输出以前的值(t2来了)//// ticket的值就变成了99//// 窗口1正在出售第100张票//// 窗口2正在出售第100张票////}//}//}@Overridepublic void run() {while (true) {// t1,t2,t3三个线程// 这一次的tickets = 1;if (tickets > 0) {// 为了模拟更真实的场景,我们稍作休息try {Thread.sleep(100); //t1进来了并休息,t2进来了并休息,t3进来了并休息,} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "正在出售第"+ (tickets--) + "张票");//窗口1正在出售第1张票,tickets=0//窗口2正在出售第0张票,tickets=-1//窗口3正在出售第-1张票,tickets=-2}}}}
package cn.itcast_08;/* * 实现Runnable接口的方式实现 * * 通过加入延迟后,就产生了连个问题: * A:相同的票卖了多次 * CPU的一次操作必须是原子性的 * B:出现了负数票 * 随机性和延迟导致的 */public class SellTicketDemo {public static void main(String[] args) {// 创建资源对象SellTicket st = new SellTicket();// 创建三个线程对象Thread t1 = new Thread(st, "窗口1");Thread t2 = new Thread(st, "窗口2");Thread t3 = new Thread(st, "窗口3");// 启动线程t1.start();t2.start();t3.start();}}
0 0
- Java基础----一个有问题的多线程程序
- java多线程SOCKET程序的一个问题
- 一个有问题的java程序
- java多线程并发去调用一个类的静态方法,会有问题吗?
- 一个基础的多线程问题,记录学习多线程
- Java多线程基础问题
- 最近遇到的一个Java多线程问题
- Java基础----多线程程序解决
- 有一个Java小程序
- 【Linux基础】用Gdb调试有问题的程序
- 一个有意思的小程序,考验多线程问题能力
- 有问题的程序
- java基础-多线程有哪些状态
- 一个多线程的问题
- Java程序中的多线程问题
- 一个简单的多线程、断点下载Java程序
- 我对JAVA中一个多线程程序的思考
- Java进度条多线程调用问题,一个很实用的问题
- 列主元消元法
- 监听Android屏幕是否锁屏
- Altium Designer 6.9(学习一)
- 迭代法解线性方程组
- javascript命名规则
- Java基础----一个有问题的多线程程序
- ios 头疼的问题
- 常用的正则表达式
- GUI 运用
- iOS开发的22个奇谲巧技
- 《数据结构》实验二: 线性表实验
- lua语法说明详解
- windows7系统上Visual Studio Ultimate 2013环境下Zeromq的安装配置
- 大整数相加