Java怎么使用synchronized声明一个变量

 我来答
samismiling
推荐于2018-10-12 · 知道合伙人软件行家
samismiling
知道合伙人软件行家
采纳数:1340 获赞数:5604

向TA提问 私信TA
展开全部
首先要说明的是,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
fanzhanwei
推荐于2017-09-09 · TA获得超过208个赞
知道答主
回答量:128
采纳率:0%
帮助的人:75.6万
展开全部
方法声明时使用,放在范围操作符(public等)之后,返回类型声明(void等)之前.即一次只能有一个线程进入该方法,其他线程要想在此时调用该方法,只能排队等候,当前线程(就是在synchronized方法内部的线程)执行完该方法后,别的线程才能进入.
例如:
public synchronized void synMethod() {
//方法体
}
追问
变量怎么弄呢?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qbj2002
2012-08-23 · TA获得超过513个赞
知道小有建树答主
回答量:553
采纳率:0%
帮助的人:291万
展开全部
你所的应该是
synchronized(Object){
XXXXX
}
这种是synchronized的令爱一种应用,它不是修饰变量,是控制一段代码块的,你可以参考一下
synchronized的介绍。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友fff3ffc
2012-05-22 · TA获得超过574个赞
知道小有建树答主
回答量:253
采纳率:100%
帮助的人:116万
展开全部
synchronized(Object){
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
莔囧冏冋冂
2012-05-20 · TA获得超过642个赞
知道小有建树答主
回答量:411
采纳率:100%
帮助的人:549万
展开全部
synchronized 不能修饰变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式