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
  • asp之家 软件编程 m.aspxhome.com