具体实现例子

测试结果如下图

场景:模拟卖票,假设有200张票,四个窗口同时售票。
package com.commons.commons.taskthread;
/**
* @Author zhaomengxia
* @create 2019/10/12 17:39
*/
public class SaleTicketRunnable implements Runnable {
private String name;
public SaleTicketRunnable() {
}
public SaleTicketRunnable(String name) {
this.name = name;
}
//共享数据
int number = 200;
@Override
public void run() {
while (true) {
if (number > 0) {
System.out.println(Thread.currentThread().getName() + "卖出" + (number--) + "号");
} else {
break;

本文通过实例展示了如何在Java中实现Runnable接口并重写run方法来创建多线程。在模拟卖票场景中,初始有200张票,四个线程窗口并发销售,测试结果显示出现了多个窗口卖出同一张票的并发问题。为了解决这个问题,文章提出了三种解决方案,包括使用synchronized关键字、Lock接口以及使用AtomicInteger等并发工具类,确保线程安全,避免了并发冲突。
最低0.47元/天 解锁文章
2442

被折叠的 条评论
为什么被折叠?



