package com.atguigu.ticket;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/*什么是进程?什么是线程?
进程:后台运行的软件,像 QQ.exe QQMusic.exe
线程:线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.
就像QQ中的各个窗口
一个进程中至少有一个线程。一个进程中是可以有多个线程的
*/
/*什么是并发?什么是并行?
并发: 一个CPU(采用时间片)同时执行多个任务。比如:秒杀、多个人做同一件事。
同一时间点多个线程共同抢夺同一份资源 例如:12306抢票
并行:多个CPU同时执行多个任务。比如:多个人同时做不同的事。 就像变烧水边泡方便面
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。
*/
//在高内聚低耦合的前提下,线程 操作 资源类
public class SaleTicket {
public static void main(String[] args) {
Ticket ticket = new Ticket();
new Thread(() -> {
for (int i = 0; i < 40; i++)
ticket.sale();
}, "售票员一").start();
new Thread(() -> {
for (int i = 0; i < 40; i++)
ticket.sale();
}, "售票员二").start();
new Thread(() -> {
for (int i = 0; i < 40; i++)
ticket.sale();
}, "售票员三").start();
/*
* new Thread(new Runnable() {
*
* @Override public void run() { for (int i = 0; i < 40; i++) { ticket.sale(); }
* } }, "售票员一").start();
*
* new Thread(new Runnable() {
*
* @Override public void run() { for (int i = 0; i < 40; i++) { ticket.sale(); }
* } }, "售票员二").start();
*
* new Thread(new Runnable() {
*
* @Override public void run() { for (int i = 0; i < 40; i++) { ticket.sale(); }
* } }, "售票员三").start();
*/
}
}
//三名售票员 卖票 30张
class Ticket {// 资源类
/*
* private int ticket = 30;
*
* public synchronized void sale() { if (ticket > 0) {
* System.out.println(Thread.currentThread().getName() + "正在卖第" + (ticket--) +
* "张票,还剩" + ticket + "张票"); } }
*/
private int ticket = 30;
Lock lock = new ReentrantLock();
public void sale() {
lock.lock();// 添加锁
try {
if (ticket > 0) {
System.out.println(Thread.currentThread().getName() + "正在卖第" + (ticket--) + "张票,还剩" + ticket + "张票");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
lock.unlock();// 释放锁
}
}
}
普通的一个普通猿
- 粉丝: 1467
- 资源: 1897
最新资源
- php的常用函数总结材料
- 基于Python控制台的精美圣诞树程序设计与实现
- 这个资源包含使用HTML5 Canvas绘制圣诞老人和圣诞树的示例代码,适合开发者在网页中实现节日气氛
- 241840040 李占睿 期末作业.docx
- Google Chrome Chrome 128 macOS Catalina Chrome 128浏览器
- 麦克纳姆轮小车sw2020可编辑全套技术开发资料100%好用.zip
- 苹果连接器Bushing组装自动机sw14可编辑全套技术开发资料100%好用.zip
- CoLoR-Filter: Conditional Loss Reduction Filtering for Targeted Language Model Pre-training
- Microsoft Remote Desktop Beta 10.8.4 支持macOS Catalina的最新版本
- 蓝桥杯编程大赛介绍和心得,分享部分案例题型!
- 红盒子检测27-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 设施布局优化-粒子群算法
- 工作汇报 ,年终总结, PPT, PPT模板
- js的三种验证码插件,下载即用
- Beyond Compare 4 文件对比 安装、激活
- Deep Bayesian Active Learning for Preference Modeling in Large Language Models
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈