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

我来回答

5个回答

热心网友 时间: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

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

方法声明时使用,放在范围操作符(public等)之后,返回类型声明(void等)之前.即一次只能有一个线程进入该方法,其他线程要想在此时调用该方法,只能排队等候,当前线程(就是在synchronized方法内部的线程)执行完该方法后,别的线程才能进入.
例如:
public synchronized void synMethod() {
//方法体
}追问变量怎么弄呢?

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

你所的应该是
synchronized(Object){
XXXXX
}
这种是synchronized的令爱一种应用,它不是修饰变量,是控制一段代码块的,你可以参考一下
synchronized的介绍。

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

synchronized(Object){
}

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

synchronized 不能修饰变量。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 养宠物的人遵守规则,是不是就能和别人平安相处呢? 企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 java synchronized 的用法问题 java 中 synchronized 修饰函数时代表什么意思啊? 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最后一页是空白页删不掉,怎么可能(二) java中synchronized问题 java中synchronized的参数有什么用? 属龙的人名字中带人字旁意味着什么? 怎样挑选鸡蛋好坏 UE4和3Dmax学习,有什么好的推荐吗? 我外婆80多岁了,还可以吃燕窝吗? 80到90岁老人可以吃燕窝吗?? 83岁老人能吃燕窝吗 老人可以吃燕窝吗? 按照手机里的做古早蛋糕视频能否做成功? 老年人可以吃燕窝吗?有什么好处? 汉口左岸天地怎么样?好不好?值不值得买? 83岁老人可以吃燕窝吗 老人可以服用燕窝吗?怎么吃? 我是黄冈户口,想要在武汉买房,只有买不限购的,哪里 柯基斗臀古早蛋糕怎么做? 八十多岁老人能吃燕窝吗 武汉远城区的房子值得买吗 网红古早蛋糕怎样做,口感更佳,非常的美味? 我爸爸感冒了,80岁了,吃点燕窝是不是好得快?