java 线程锁详细介绍及实例代码
作者:lqh 时间:2022-03-16 13:50:45
java 线程锁
在Java线程中运用synchronized关键字来达到同步的
synchronized可以锁方法,锁类,锁对象,锁代码块
方法锁
// 加在方法上面的同步锁是this
public synchronized void print() {
System.out.println("同步方法");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
类锁
public synchronized void print(String msg) {
// 类锁
synchronized (MyThread.class) {
System.out.println(msg);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
对象锁
以卖火车票为例
public class Window extends Thread {
public Window(String name) {
super(name);
}
static int tick = 100;
static String obj = new String();
@Override
public void run() {
// 开始卖票
while (tick > 0) {
// 同步代码块
// 一把锁 钥匙
// 所有的线程 必须在这里排队
synchronized (obj) {
if (tick > 0) {
System.out.println(getName() + "卖出了第【" + tick + "】张票");// 失去了cpu资源
tick--;
}
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
标签:java,线程锁
0
投稿
猜你喜欢
基于Flutter实现爱心三连动画效果
2023-09-02 03:38:36
Java synchronized偏向锁的核心原理详解
2022-12-26 12:11:58
详解java关于对象的比较
2022-12-11 01:28:55
springboot整合spring-retry的实现示例
2022-01-13 01:25:53
C#实现合并多个word文档的方法
2022-10-02 08:32:39
SpringBoot 项目瘦身maven/gradle详解
2021-10-26 04:39:12
C#修改IIS站点framework版本号的方法
2023-08-29 19:14:13
C#使用RichTextBox实现替换文字及改变字体颜色功能示例
2023-07-04 23:04:18
Android 开发之dataBinding与ListView及事件
2023-10-13 21:14:28
Android UI新组件学习和使用
2022-04-09 01:42:03
Android中实现水平滑动(横向滑动)ListView示例
2021-09-07 18:15:03
spring scheduled单线程和多线程使用过程中的大坑
2022-09-24 05:51:10
详解HDFS多文件Join操作的实例
2023-09-20 07:44:14
C#实现简单的计算器功能
2021-05-31 01:52:46
如何为Spring Cloud Gateway加上全局过滤器
2022-06-19 09:14:47
Java虚拟机JVM性能优化(三):垃圾收集详解
2021-10-16 10:38:49
Java查找并高亮PDF文本过程解析
2022-02-17 07:20:32
简单的观察者模式示例分享
2023-02-11 12:52:12
SpringBoot数据访问自定义使用Druid数据源的方法
2023-01-10 16:29:38
详解Android全局异常的捕获处理
2023-02-05 09:02:11