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();// 释放锁
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
毕业设计是高等教育阶段学生完成学业的一个重要环节,通常在学士或硕士学业即将结束时进行。这是学生将在整个学业中所学知识和技能应用到实际问题上的机会,旨在检验学生是否能够独立思考、解决问题,并展示其专业能力的一项综合性任务。 毕业设计的主要特点包括: 独立性: 毕业设计要求学生具备独立思考和解决问题的能力。学生需要选择一个合适的课题,研究相关文献,进行实地调查或实验,并提出独立见解。 实践性: 毕业设计是将理论知识应用到实际问题中的一次实践。通过完成毕业设计,学生能够将所学的专业知识转化为实际的解决方案,加深对专业领域的理解。 综合性: 毕业设计往往要求学生运用多个学科的知识,综合各种技能。这有助于培养学生的综合素养,提高他们的综合能力。 导师指导: 学生在毕业设计过程中通常由一名指导老师或导师团队提供指导和支持。导师负责引导学生确定研究方向、制定计划、提供建议,并在整个过程中监督进展。 学术规范: 毕业设计要求学生按照学术规范完成研究,包括文献综述、研究设计、数据采集与分析、结论和讨论等环节。学生需要撰写一篇完整的毕业论文,并进行答辩。
资源推荐
资源详情
资源评论
收起资源包目录
售票员多线程售票.zip (3个子文件)
ABT-code
pom.xml 396B
src
main
java
com
atguigu
ticket
SaleTicket.java 3KB
Test.java 208B
共 3 条
- 1
资源评论
普通的一个普通猿
- 粉丝: 1468
- 资源: 1897
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 的玩具 Python 实现.zip
- RHCE linux下的火墙管理 及下载
- ESP32-C3FH4 : UltraLowPower SoC with RISCV SingleCore CPU Supporting 2.4 GHz WiFi and Bluetooth LE
- 用于解包和反编译由 Python 代码编译的 EXE 的辅助脚本 .zip
- 用于自动执行任务的精选 Python 脚本列表.zip
- 全国IT学科竞赛蓝桥杯的比赛特点及参赛心得
- 用于编码面试审查的算法和数据结构 .zip
- 用于操作 ESC,POS 打印机的 Python 库.zip
- 用于控制“Universal Robots”机器人的 Python 库.zip
- 用于控制 Broadlink RM2,3 (Pro) 遥控器、A1 传感器平台和 SP2,3 智能插头的 Python 模块.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功