</pre><pre name="code" class="java">package 卖车票程序;
/*
* 多线程,cpu来回切换运行程序,就会导致一个问题的出现,一个线程卖票一张刚卖出去还没减一,cpu又切换到另一个线程去了,
* 会导致这个线程以没减的票为总数开始卖。*/
import 课后作业.test1;
public class TestCpiao extends Thread {
public static int chepiao = 100;// 加static所有对象共享100站票
public static String aa = new String("1");//aa也要设置成静态的。这样才能为公共的,如果aa不是公共的,那么线程就不存在抢了。字符串随意定义定义在函数边
//synchronized的作用是 让他管辖的代码部分,要么全部执行完,要么全部不执行
public void run() {//synchronized修饰函数不需要字符串,相当于默认this
while (true) {
synchronized (aa) {//即可以修饰代码块又可以修饰函数
if (chepiao > 0) {
System.out.println("第" + Thread.currentThread().getName()
+ "车站在卖第" + (101 - chepiao) + "张车票");
--chepiao;
} else {
break;
}
}
}
}
public static void main(String[] args) throws InterruptedException {
TestCpiao testCpiao = new TestCpiao();
testCpiao.start();
TestCpiao testCpiao2 = new TestCpiao();
testCpiao2.start();
}
}
java多线程卖票问题。
原创
©著作权归作者所有:来自51CTO博客作者晴天MZ的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:xml书写问题
下一篇:java进程的代码。

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java实现多线程(车站卖票)
...
java实现 -
system扩容包怎么刷
使用LVM方式扩容硬盘空间 目录 [显示] 环境说明 案例环境说明:该解码引擎服务器已经采用LVM的方式进行了部署,原始的解码引擎遇到/data硬盘空间不足的问题,需要通过LVM方式再次对/data扩展空间。如图所示,在我们的解码服务器上新增
system扩容包怎么刷 5g System sed Access -
unity水果机滚动效果
今天给大家带来水果机项目的制作,嗯......这个项目呢,相比于我上个博客的播放器要简单不少,但是也有一些播放器中没有出现过的新知识,大家也一定不要懈怠昂! 这是另一个开端! 具体来说呢,首先大家要创建一个新项目,名字尽量自
unity水果机滚动效果 python ico 自定义函数 自定义