长沙java培训
达内长沙芙蓉路中心

18487146383

热门课程

Java同步知识分享

  • 时间:2016-04-14
  • 发布:长沙Java培训
  • 来源:达内新闻

长沙java培训机构小伙伴给大家做的分享希望大家好好学习,长沙java培训也希望收到更多小伙伴的知识分享。

java同步指的是synchronized机制,而非synchronized的都是异步,弄懂同步的概念就大致明白了两者的差别。

有关同步:

synchronized用来修饰一个方法或者一个代码块,它用来保证在同一时刻最多只有一个线程执行该段代码。

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

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

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

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

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

示例代码:

Java同步知识分享

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培训班小伙伴的分享结束了,你还有什么想要咨询的嘛?欢迎和长沙java培训小编交流。

上一篇:长沙java培训Java异步介绍:
下一篇:js文件的同步加载与异步加载

js利用控件对windows的操作实现原理

Android中的资源是指非代码部分,指外部文件。

js判断一个值在数组中

JQuery操作dom节点

选择城市和中心
贵州省

广西省

海南省

扫一扫

了解更多干货