JAVA线程sleep和wait方法区别 代码
2024-08-30 03:23:09
package test; import java.util.Date;
import java.util.Random; public class test { public static void main(String[] args) {
TicketThread thread = new TicketThread(); for (int i = 0; i < 10; i++) {
new Thread(thread, "client-" + (i + 1)).start();
}
} public static class TicketThread implements Runnable {
private int stock = 10;
private Object lock = new Object(); public void run() {
while (stock > 0) {
synchronized (lock) {
if (stock > 0) {
try {
Integer processingTime = new Random().nextInt(1000);
System.out.println(Thread.currentThread().getName() + ":订单处理中..."+ stock + new Date());
Thread.sleep(processingTime);
System.out.println(Thread.currentThread().getName() + ":交易成功,库存余量:" + --stock + new Date());
lock.wait(12000); //释放锁,其余的线程不等待12秒,直接去打印
//Thread.sleep(12000); 锁不放,其余的线程不能打印,等待12秒出一个打印
System.out.println(Thread.currentThread().getName() + ":睡眠结束...:" + stock + new Date());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
} }
最新文章
- Linux学习笔记(9)-守护进程
- Dog_Hybird的诞生
- 使用srvany.exe将任何程序作为Windows服务运行
- raw格式镜像文件压缩并转换为qcow2格式
- [cdoj1380] Xiper的奇妙历险(3) (八数码问题 bfs + 预处理)
- ASP.NET MVC5学习笔记之Action参数模型绑定之模型元数据和元数据提供
- zoj 3513 Human or Pig 博弈论
- unity3d 射线扫描 忽略图层
- hibernate--lazy(懒加载)属性
- python-从redis数据库中读数据
- 虚拟机最佳实践:单个 VM、临时存储和已上传磁盘
- mesos 资源分配
- ML笔记:Deep Learning
- 搭建TensorFlow中碰到的一些问题(TensorBoard不是内部或外部指令也不是可运行的程序)~
- 【PMP】项目生命周期和开发生命周期
- Javascript内置对象、原生对象、宿主对象关系
- JAVA 的输入与输出流当中,什么时候该使用字符流?什么时候该使用字节流?
- Java KeyNote
- Linux_Crontab命令
- gitlab相关
热门文章
- 最好PHP开发工具Zend Studio 9.0.2的安装和使用
- css样式大全(整理版)
- EXCEL最大行数问题:org.apache.xmlbeans.impl.store.Saver$TextSaver.resize(Saver.java:1700)
- New Ubuntu 16.04 Server Checklist
- 微信小程序 - 非Form数据怎么发送到后端?
- 服务器,数据库连接注意mysql的user表
- View的滚动原理简单解析
- 使用构建工具gradle打包时,遇到的中文问题和解决方式
- 非标准USBasp下载线烧录Arduino BootLoader的参数设置
- sed: -e expression #1, unknown option to `s&#39;解决办法