问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java 中 synchronized 修饰函数时代表什么意思啊?

发布网友 发布时间:2022-05-02 04:06

我来回答

4个回答

热心网友 时间:2022-06-28 01:31

详细说明如下:
synchronized用来修饰一个方法或者一个代码块,它用来保证在同一时刻最多只有一个线程执行该段代码。
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。
三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。
五、以上规则对其它对象锁同样适用。

示例代码:
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

热心网友 时间:2022-06-28 01:31

比如说两个线程同时访问这个函数的时候,为了防止写入脏数据,从而保持同步,在一个线程执行完之后,再去执行第二个线程~~

热心网友 时间:2022-06-28 01:32

这个对象的这个方法,以及所有使用了 synchronized的方法,同时只能有一个线程访问。

其它线程只能等待。

目的是防止多个线程使用同一个资源,造成冲突。

热心网友 时间:2022-06-28 01:32

代表这个方法加索,相当于每一次运行到这个法,都要检查有没有其它正在用这个方法的程序,有的话要等其它运行完这个方法后再运行此线程,没有的话,直接运行
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... Java的synchronized关键字怎么用? java中synchronized是怎么运用的,详解··· java synchronized关键字? Java怎么使用synchronized声明一个变量? java 中 synchronized 是什么意思 java synchronized的写法 Java 中同步(syncronize)怎么使用 java中,synchronized 的使用? java中的synchronized怎么使用? java中的synchronized()的具体作用 java synchronized 有两种用法?一种是方法上加synchronized ,还有一种是什么? synchronized 加在java方法前面是什么作用 建筑劳务分包合同应由总包、分包中哪一方组织备案? ...甲方要求我们劳务分包备案,劳务分包合同可以和个人签订吗?_百度... 长春市劳务分包企业进场施工前登记备案办理条件是什么? ...合同、专业分包合同、专业承包合同、劳务分包合同的区别联系?什么是... 北京市有政府文件规定分包合同必须备案吗? word最后一页是空白页删不掉,怎么可能(二) 总承包下面有劳务分包,劳务分包资质等需要在建设单位备案吗? word有的时候最后一页是空白页,删不掉 java synchronized 的用法问题 Java怎么使用synchronized声明一个变量 java中synchronized问题 java中synchronized的参数有什么用? 属龙的人名字中带人字旁意味着什么? 怎样挑选鸡蛋好坏 UE4和3Dmax学习,有什么好的推荐吗? 我外婆80多岁了,还可以吃燕窝吗? 80到90岁老人可以吃燕窝吗?? 83岁老人能吃燕窝吗 老人可以吃燕窝吗? 按照手机里的做古早蛋糕视频能否做成功? 老年人可以吃燕窝吗?有什么好处? 汉口左岸天地怎么样?好不好?值不值得买? 83岁老人可以吃燕窝吗 老人可以服用燕窝吗?怎么吃? 我是黄冈户口,想要在武汉买房,只有买不限购的,哪里 柯基斗臀古早蛋糕怎么做? 八十多岁老人能吃燕窝吗 武汉远城区的房子值得买吗