多线程写法,消除同步bug
2024-10-12 17:41:39
public class Demo01 implements Runnable {
private int ticket = 10;
@Override
public void run() {
for (int i = 0; i < 10; i++) {
synchronized (this) {
if (ticket > 0) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()
+ ",正在卖出第" + (this.ticket--) + "张票!");
}
}
}
}
public static void main(String[] args) {
Demo01 mt = new Demo01();
new Thread(mt, "售票员A").start();
new Thread(mt, "售票员B").start();
new Thread(mt, "售票员C").start();
}
最新文章
- PowerBuilder -- 字符
- Python练习,网络小爬虫(初级)
- div css 自适应
- C# 通过代理获取url数据
- [转]AngularJS fixed header scrollable table directive
- JavaWeb开发必过关-Servlet学习(一)
- FZU 1649 Prime number or not米勒拉宾大素数判定方法。
- Codeforces Round #257 (Div. 1) (Codeforces 449D)
- .NET Framework 4.5 五个很棒的特性
- BZOJ3122 随机数生成器
- ecshop支持手机号码登录、邮箱登录
- mac下识别国产android手机
- 算法打基础——HashⅡ: 全域哈希与完美哈希
- 多AG自动生成apk说明
- SpringBoot 之静态资源
- Python小项目四:实现简单的web服务器
- Servlet向JSP过渡
- python测试开发django-13.操作数据库(增删改查)
- FreePascal - Typhon在Windows10 X64下的使用问题!
- python模块之lib2to3(py2转py3自动化工具)
热门文章
- devc++编译时 undefined reference to `__imp_WSAStartup&#39;
- sql中count(1)、count(*)与count(列名)的区别
- PyQt+moviepy音视频剪辑实战1:多视频合成顺序播放或同屏播放的视频文件
- 转:Http协议中Cookie详细介绍
- PyQt(Python+Qt)学习随笔:布局控件layoutStretch属性
- 跨国合作:Serverless Components 在腾讯云的落地和实践
- Redis Sentinel-深入浅出原理和实战
- js滑动到页面底部实现
- Java集合源码分析(七)——TreeMap
- JAVA字符配置替换方案