java 线程锁详细介绍及实例代码
发布时间:2021-01-11 12:19:23 所属栏目:Java 来源:互联网
导读:java线程锁在Java线程中运用synchronized关键字来达到同步的synchronized可以锁方法,锁类,锁对象,锁代码块
|
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 线程池ExecutorService详解及实例代码
- java – 从XMLGregorianCalender中删除“Z”部分
- Mybatis多参数及实体对象传递实例讲解
- 判断以逗号分隔的字符串中是否包含某个数的实例
- Java用 Rhino/Nashorn 代替第三方 JSON 转换库
- java 中数据库连接的JDBC和驱动程序的深入分析
- java-ee – 在maven-embedded-glassfish-plugin上的CDI注入
- 浅谈java中的一维数组、二维数组、三维数组、多维数组
- java – 如何在Spring上运行EnableScheduling注释来重新启动
- java按字节截取带有汉字的字符串的解法(推荐)
