当前位置: 首页 > article >正文

Java—锁—等待唤醒机制

答:不会,要先有执行资格和执行权然后才会执行下面的代码。

线程的安全问题

同步代码块

线程锁:

把操作共享数据的代码锁起来

特点1:锁默认打开,有一个线程进去了,锁自动关闭

特点2:里面的代码全部执行完毕,线程出来,锁自动打开

练习:某电影院目前正在上映国产大片,共有19张票,而它有3个窗口卖票,请设计一个程序模拟该电影院卖票

锁对象还可以改写成:MyThread.class

同步方法

就是把synchronized关键字加到方法上

练习:某电影院目前正在上映国产大片,共有19张票,而它有3个窗口卖票,请设计一个程序模拟该电影院卖票

注意:这里int ticket=0前面没有加静态,因为这里就创建了一个myrunble的对象。

这里因为执行过快会出现只有一个窗口买票的情况

如果想要看到窗口交织的情况可以加上thread.sleep(参数).

改为同步方法:

Lock锁

代码练习:某电影院目前正在上映国产大片,共有19张票,而它有3个窗口卖票,请设计一个程序模拟该电影院卖票

1.程序不会停止因为当ticked=100时执行break代码会直接跳到while的外面没有执行关索拿着锁对象出去没有把锁打开。2线程和3线程会一直停在锁对象哪里,程序不会关闭。

2.这里lock加static静态是因为有多个对象需要共享一个

想要解决写try catch finally, finally里面的代码一定会执行

死锁

死锁:不是一个知识点,是一个错误。

学习目的:不犯这样的错误。

一句话俩个锁不能嵌套

等待唤醒机制

常见方法:

例子,吃面条

消费者代码

生产者代码

等待唤醒机制(阻塞队列方式实现)

阻塞队列的继承结构:

代码案例:


http://www.kler.cn/a/568611.html

相关文章:

  • 随机树算法 自动驾驶汽车的路径规划 静态障碍物(Matlab)
  • thinkphp6-使用psubscribe进行redis的注意callback中使用redis
  • 《Python实战进阶》No 11:微服务架构设计与 Python 实现
  • 字符串的最大公因子<枚举>
  • C语言学习笔记-初阶(23)函数详解
  • QT——c++界面编程库
  • app项目管理, 应该以UI为导向还是以研发为导向
  • 细说 Java 集合之 Map
  • 千峰React:组件与逻辑封装(上)
  • 2025国家护网HVV高频面试题总结来了01(题目+回答)
  • Django模型管理器/QuerySet 常见的方法
  • Python基于交互注意力的深度时空网络融合多源信息的剩余寿命预测方法
  • DeepSeek-R1私有化部署——使用Python实现DeepSeek-R1-Distill-Qwen模型部署调用与流式输出
  • 青海高校迎新系统的实施与影响
  • Qwen2-Audio系列学习笔记
  • TrustRAG:通过配置化模块化的检索增强生成(RAG)框架提高生成结果的可靠性和可追溯性
  • HIVE数据加载
  • LeetCode 202. 快乐数 java题解
  • uniapp 中引入使用uView UI
  • 前端文件分片上传深度解析:从原理到实践