类锁

* 对象锁(synchronized method{})和类锁(static sychronized method{})的区别

     - 对象锁也叫实例锁,对应synchronized关键字,当多个线程访问多个实例时,它们互不干扰,每个对象都拥有自己的锁,如果是单例模式下,那么就是变成和类锁一样的功能。

     - 对象锁防止在同一个时刻多个线程访问同一个对象的synchronized块。如果不是同一个对象就没有这样子的限制。

     - 加锁静态方法,即类锁。可以换个方向理解,静态方法其实就是类方法,所以加锁静态方法,即类锁。类锁的范围是整个实体类,即全局锁。
  • 代码实例

    ``

      package com.shige.Thread;
    /*
    类锁,类锁只有一个
    */
    public class ThreadTest12 {
    public static void main(String[] args) throws InterruptedException { //创建线程
    Thread thread=new Thread(new Precossor_12());
    thread.setName("t1");
    Thread thread1=new Thread(new Precossor_12());
    thread1.setName("t2"); //启动线程
    thread.start(); //延迟保证thread先执行
    Thread.sleep(1000);
    thread1.start(); } } class Precossor_12 implements Runnable{ @Override
    public void run() {
    if("t1".equals(Thread.currentThread().getName())){
    MyClass.m1();
    } if("t2".equals(Thread.currentThread().getName())){
    MyClass.m2();
    }
    }
    } class MyClass{
    //synchronized 添加到静态方法上,线程执行到此方法后,会去找类锁
    public synchronized static void m1(){
    try {
    Thread.sleep(5000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    System.out.println("m1..............");
    } // 该方法不会等m1结束在执行,有哪位它没有被synchronized修饰,如果使用synchronized修饰,那么就一定会等m1结束再执行
    public static void m2(){
    System.out.println("m2.............."); }
    }

最新文章

  1. [Java面试七]Mybatis总结以及在面试中的一些问题.
  2. Swift - enumerateObjectsUsingBlock的用法
  3. 机器学习技法--学习笔记03--Kernel技巧
  4. hbase centOS生产环境配置笔记 (1 NameNode, 1 ResourceManager, 3 DataNode)
  5. 第二十一章 数据访问(In .net4.5) 之 序列化
  6. Xlib: connection to ":0.0" refused by server Xlib: No protocol specified解决方案
  7. 编译Android4.3内核源代码
  8. 【转】java--final
  9. 分布式日志收集系统Apache Flume的设计详细介绍
  10. Python 学习笔记9
  11. 关于如何介绍spring框架。
  12. Ocelot中文文档-微服务ServiceFabric
  13. 【MySql】常用方法总结
  14. Vue 组件&组件之间的通信 父子组件的通信
  15. JXOJ(基于UOJ)部署日志
  16. 使用ajax上传表单(带文件)
  17. (三)github之GIT的导入
  18. docker 私有仓库 harbor docker-compose
  19. Charles工具内存不足时解决办法
  20. luogu 1066 引水入城(bfs+贪心)

热门文章

  1. 力扣832. 翻转图像-C语言实现-简单题
  2. Tawk.to工具使用攻略--如何让访客通过tawk.to联系时先填写邮箱、联系方式等信息
  3. vue3中使用axios如何去请求数据
  4. 31Si2CrMoB
  5. free命令查看内存
  6. 内核报错kernel:NMI watchdog: BUG: soft lockup - CPU#1
  7. 剑指 Offer 50. 第一个只出现一次的字符 + 哈希表 + 有序哈希表
  8. CCF(URL映射:80分):字符串处理+模拟
  9. 05.从0实现一个JVM语言之目标平台代码生成-CodeGenerator
  10. 翻译:《实用的Python编程》04_00_Overview