美文网首页Java 杂谈
java synchronized详解

java synchronized详解

作者: 程序o07 | 来源:发表于2018-07-15 15:51 被阅读3次

Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。        

一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。        

二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。        

三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。

Java初高级学习分享,共同学习才是最明智的选择,喜欢的话可以我的学习群64弍46衣3凌9,或加资料群69似64陆0吧3(进群备注平台名)        

四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。        

五、以上规则对其它对象锁同样适用。        

举例说明:        

一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。        

package ths;        

public class Thread1 implements Runnable {       

 public void run() {        

synchronized(this) {        

for (int i = 0; i < 5; i++) {        

System.out.println(Thread.currentThread()。getName() + " synchronized loop " + i);        }        

}        

}        

public static void main(String[] args) {        

Thread1 t1 = new Thread1();        

Thread ta = new Thread(t1, "A");        

Thread tb = new Thread(t1, "B");        

ta.start();        

tb.start();        

}        

}        

结果:        

A synchronized loop 0        

A synchronized loop 1       

A synchronized loop 2        

A synchronized loop 3        

A synchronized loop 4        

B synchronized loop 0        

B synchronized loop 1        

B synchronized loop 2        

B synchronized loop 3        

B synchronized loop 4

❤提问/互动请留言,可直接在最底右下方"写留言即可"

❤Java初高级学习分享,共同学习才是最明智的选择,喜欢的话可以我的学习群64弍46衣3凌9,或加资料群69似64陆0吧3(进群备注平台名)

❤如果觉得写得不错请点击“订阅”,每天更新全新的内容!

❤你们的喜欢和关注就是我最大的动力支撑!!!

相关文章

  • 多线程使用之-----synchronized/wait/not

    参考文献: java synchronized详解 synchronized 修饰方法 synchronized ...

  • Java基础-Synchronized详解一

    Java中的Synchronized详解 1.Synchronized简介 Synchronized简称同步锁。 ...

  • java基础----Synchronized、Lock的区别与V

    引用了 Lock与synchronized 的区别 详解synchronized与Lock的区别与使用 Java并...

  • java synchronized详解

    Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 ...

  • Java synchronized 详解

    由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门...

  • java synchronized详解

    在java多线程并发编程中对于 sychronized 大家一定不陌生,同步关键字 synchronized 是j...

  • Java synchronized 详解

    由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门...

  • Java并发知识体系详解

    Java 并发相关知识体系详解,包含理论基础,线程基础,synchronized,volatile,final关键...

  • Java synchronized用法详解

      在Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchroni...

  • Java 之 synchronized 详解

    一、概念 synchronized 是 Java 中的关键字,是利用锁的机制来实现同步的。 锁机制有如下两种特性:...

网友评论

    本文标题:java synchronized详解

    本文链接:https://www.haomeiwen.com/subject/dppppftx.html