问答文章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

我来回答

1个回答

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

首先要说明的是,java里不能直接使用synchronized声明一个变量,而是使用synchronized去修饰一个代码块或一个方法。

详细说明如下:

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
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
氢离子和碳酸根 氢离子和碳酸氢根 哪个反应快为什么 乌金木有哪些家具 乌金木家具如何搭配 木饰面装修多少钱一平方 关于加速度知识点的三个疑问 ...章探究加速度与力质量的关系知识点|物理加速度的5个公式 这只黑猫属于什么品种 孟买猫的免疫力如何 点火开关上的1234分别于红黄蓝黑线谁对应 万和热水器拨码开关,1234是全开的吗 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 修饰函数时代表什么意思啊? java synchronized 的用法问题 Java怎么使用synchronized声明一个变量 java中synchronized问题 java中synchronized的参数有什么用? 属龙的人名字中带人字旁意味着什么? 怎样挑选鸡蛋好坏 UE4和3Dmax学习,有什么好的推荐吗? 我外婆80多岁了,还可以吃燕窝吗? 80到90岁老人可以吃燕窝吗?? 83岁老人能吃燕窝吗 老人可以吃燕窝吗? 按照手机里的做古早蛋糕视频能否做成功? 老年人可以吃燕窝吗?有什么好处? 汉口左岸天地怎么样?好不好?值不值得买? 83岁老人可以吃燕窝吗 老人可以服用燕窝吗?怎么吃?