`

synchronized的作用(三)

    博客分类:
  • j2se
阅读更多
b、锁定一个对象或方法,它是静态的
这样锁定,它锁定的是对象所属的类
public synchronized    static void execute(){
      //...
}


等同于

public class TestThread {
    public static void execute(){
        synchronized(TestThread.class){
            //
          }
      }
}

测试:

目标类:

public class TestThread {
    private static Object lock=new Object();
    public synchronized static void execute(){  //同步静态方法
        for(int i=0;i<100;i++){
              System.out.println(i);
          }    
      }
    public static void execute1(){
        for(int i=0;i<100;i++){
              System.out.println(i);
          }    
      }
    public void test(){
          execute();     //输出是有序的,说明是同步的
        //execute1();  //输出是无须的,说明是异步的
      }
}


线程类:调用不同的方法,于是建立了两个线程类


public class ThreadA implements Runnable{
    public void run() {
          TestThread.execute();//调用同步静态方法
      }
}
public class ThreadB implements Runnable{
    public void run() {
          TestThread test=new TestThread();
          test.test();//调用非同步非静态方法
      }
}

调用:

Runnable runabbleA=new ThreadA();
Thread a=new Thread(runabbleA,"A");                
a.start();
Runnable runabbleB=new ThreadB();
Thread b=new Thread(runabbleB,"B");                
b.start();
分享到:
评论

相关推荐

    Java并发编程:Synchronized及其实现原理

    Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题。从语法上讲,Synchronized总共有三种用法:  (1)修饰普通方法  (2)修饰静态...

    Java多线程和并发知识整理

    三、Synchronized 详解 3.1 使用 3.2 原理分析 3.3 JVM中锁的优化 3.4 Synchronized与Lock 3.5 扩展 四、volatile 详解 4.1 作用 4.2 实现原理 4.3 应用场景 五、final 详解 5.1 基础 5.2 重排序规则 5.3...

    变态级JAVA程序员面试32问

    第一,谈谈final, finally, finalize的区别。  第二,Anonymous Inner Class ... 第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?  第三十二,编程题: 写一个Singleton出来。

    Java面试题.docx

    内部类的作用 5、进程和线程的区别 6、final,finally,finalize的区别 7、Serializable 和Parcelable 的区别 8、静态属性和静态方法是否可以被继承?是否可以被重写?以及原因? 9、成员内部类、静态内部类、...

    并发编程面试专题.pdf

    1) 现在有 T1、T2、T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行? 2) 在 Java 中 Lock 接口比 synchronized 块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个...

    java编程规范(第三版)

    6.3 声明的作用域 88 6.4 成员和继承 92 6.5 确定名称的含义 95 6.6 访问控制 104 6.7 完全限定的名称和规范名称 109 6.8 命名约定 110 第7章 包 116 7.1 包成员 116 7.2 包的主机支持 117 7.3 编译单元 ...

    java面试宝典

    一般用截取ID方法,还有是三层嵌套方法。 47 200、xml有哪些解析技术?区别是什么? 48 201、你在项目中用到了xml技术的哪些方面?如何实现的? 48 202、用jdom解析xml文件时如何解决中文问题?如何解析? 48 203、编程用...

    Java之Synchronize学习

    Synchronize有三种实现。 同步方法,修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁 静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁 修饰代码块,指定加锁对象,对给定...

    华为IBM的java面试题

    33.简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34.EJB规范规定EJB中禁止的操作有哪些? 35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用? 36.除了使用new关键字创建对象意外,试列举...

    JAVA面试题 对JAVA面试有帮助!

    找工作要面试,有面试就有对付面试的办法。以下一些题目来自我和我... 第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?  第三十二,编程题:写一个Singleton出来。  下面是答案

    史上最全java面试,103项重点知识,带目录

    4. final 在 java 中有什么作用? 4 5. java 中的 Math.round(-1.5) 等于多少? 4 6. String 属于基础的数据类型吗? 4 7. java 中操作字符串都有哪些类?它们之间有什么区别? 4 8. String str="i"与 String str=...

    java面试题进阶版附答案.docx

    三、线程同步和互斥锁:解释了线程同步的概念,以及互斥锁的作用,包括使用synchronized关键字和Lock接口实现线程同步的方式。 四、反射机制:解释了Java中的反射机制,包括在运行时动态获取类的信息,操作类的属性...

    HTTP分段下载/断点续传/多线程下载

    代码作用:多线程分段下载,加快下载速度,加入适当代码可支持断点下载 ================================================= ·示例代码位置: [项目目录]/src-app/app/DownloaderApp.java 代码里写了注释,有一定...

    【后端】java基础(5.4)java高级基础之java的修饰符——非访问控制符

    java中的非访问修饰符的作用各不一样,据我所知常用的有六种: static final abstract synchronized volatile transient 今天我们只讲前三种,后面三种等我们讲到线程的时候再回过头来讲。 首先还是通过一张经典的表...

    java-advance:java进阶,包含 常用设计模式、线程和并发、spring核心代码、mybatis核心代码、springboot2.0、springcloud G版本、docker的使用、各类面试题

    java进阶源码分析专题常用设计模式线程与并发锁的使用深度理解synchronized、volatile、cas手写ASQSpring5IOC容器设计原理及高级特性AOP设计原理FactoryBean与BeanFactorySpring事务处理机制Spring JDK动态代理...

    Java常见面试题208道.docx

    4.final 在 java 中有什么作用? 5.java 中的 Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与 String str=new String(“i...

    Java进阶教程解密JVM视频教程

    JVM 内存结构的组成、各部分功能作用,学会利用内存诊断工具排查内存相关问题;2. JVM 的招牌功能-垃圾回收机制是如何工作的,如何进行垃圾回收调优;3. Java 程序从编译为字节码到加载到运行的全流程,各个阶段的...

    二十三种设计模式【PDF版】

    主要是介绍各种格式流行的软件设计模式,对于程序员的进一步提升起推进作用,有时间可以随便翻翻~~ 23种设计模式汇集 如果你还不了解设计模式是什么的话? 那就先看设计模式引言 ! 学习 GoF 设计模式的重要性 ...

    JAVA面试题最全集

    35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用? 36.除了使用new关键字创建对象意外,试列举另外三种以上创建实例的方式? 37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有...

    汪文君高并发编程实战视频资源全集

    │ 高并发编程第二阶段05讲、一个解释volatile关键字作用最好的例子.mp4 │ 高并发编程第二阶段06讲、Java内存模型以及CPU缓存不一致问题的引入.mp4 │ 高并发编程第二阶段07讲、CPU以及CPU缓存的结构,解决高速...

Global site tag (gtag.js) - Google Analytics