多线程问题
来源:互联网 发布:网卡mac地址修改 编辑:程序博客网 时间:2024/06/09 17:44
package 卖票示例;
/**
* 多线程实现卖票
* 保证票不重复(关键保证只有一个Ticket实例)
* 运用多线程同步:前提 多线程中且必须是同一个锁
* @author 13127
*/
class Ticket implements Runnable {
private int num = 100;// 票总数
Object obj = new Object();
@Override
public void run() {
//一个线程运行时 其他线程不参与运算
while (num>0) {
// //证明存在线程安全问题 一个线程在执行操作共享数据的多调条代码的过程中,其他线程参与了运算
// 就会产生线程安全问题
//解决问题 同步代码块 synchronized ( 同一个锁) {}
// 在这里表现为票变为负 票一样
synchronized (obj) {
if(num>0)
System.out.println(Thread.currentThread().getName()+"-------sale------->"+num--);
}
}
}
}
public class SaleTicket {
public static void main(String[] args) {
Ticket d = new Ticket();
Thread t1 = new Thread(d);
Thread t2 = new Thread(d);
Thread t3 = new Thread(d);
Thread t4 = new Thread(d);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
/**
* 多线程实现卖票
* 保证票不重复(关键保证只有一个Ticket实例)
* 运用多线程同步:前提 多线程中且必须是同一个锁
* @author 13127
*/
class Ticket implements Runnable {
private int num = 100;// 票总数
Object obj = new Object();
@Override
public void run() {
//一个线程运行时 其他线程不参与运算
while (num>0) {
// //证明存在线程安全问题 一个线程在执行操作共享数据的多调条代码的过程中,其他线程参与了运算
// 就会产生线程安全问题
//解决问题 同步代码块 synchronized ( 同一个锁) {}
// 在这里表现为票变为负 票一样
synchronized (obj) {
if(num>0)
System.out.println(Thread.currentThread().getName()+"-------sale------->"+num--);
}
}
}
}
public class SaleTicket {
public static void main(String[] args) {
Ticket d = new Ticket();
Thread t1 = new Thread(d);
Thread t2 = new Thread(d);
Thread t3 = new Thread(d);
Thread t4 = new Thread(d);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
阅读全文
0 0
- 多线程问题
- 多线程问题
- 多线程问题
- 多线程问题
- 多线程问题
- 多线程问题...
- 多线程问题
- 多线程问题
- 多线程问题
- 多线程问题
- 多线程问题
- 多线程问题
- 多线程问题
- 多线程问题
- 多线程问题
- 多线程问题
- 多线程问题
- 多线程问题
- 葵花宝典 十 servlet jsp
- 机器学习(聚类[一])
- C语言考试练习题_排列
- iOS实现记住密码功能
- 利用Python实现在同一网络中的本地文件共享
- 多线程问题
- Java实现多线程的两种方式
- Struts2--请求的配置与注解
- 如何用几行代码读取目录下所有的图片
- IntelliJ Idea 常用快捷键列表
- c scanf 函数问题
- 《剑指offer》二进制中1的个数
- 消息中间件的应用场景
- 【C语言训练】尼科彻斯定理