永发信息网

java多线程同步synchronized——对象监视器

答案:4  悬赏:80  手机版
解决时间 2021-02-02 22:25
在线程同步的时候为什么要使用对象监视器,什么是对象监视器?

有同步块和同步方法,同步块前加synchronized(对象){ },为什么要有括号中的对象?这个对象的作用是什么?如果没有对象这个对象监视器会怎么样?

这个对象应该是哪个对象,可能我说的不够准确,或者应该说这个对象的监视器应该是哪个对象的监视器,是随便的吗,还是有什么要求?也不能太随便吧。

例如在一个方法里,有synchronized块,这个对象监视器应该是?
最佳答案
class MyThread5 implements Runnable {
static int n=0;
public void run() {
Synchronized(this) {
n++;
try {
Thread.sleep(1);
} catch(InterruptedException e) {
return;
}
System.out.println(Thread.currentThread().getName()+" "+n);
}
}
}

public class TestSynchronized {
public static void main(String[] args) {
MyThread5 s = new MyThread5();
Thread a = new Thread(s);
Thread b = new Thread(s);
a.start();
b.start();

}
}
全部回答
1、synchronized关键字的作用域有二种: 1)是某个对象实例内,synchronized amethod(){}可以防止多个线程同时访问这个对象的synchronized方法(如果一个对象有多个synchronized方法,只要一个线程访问了其中的一个synchronized方法,其它线程不能同时访问这个对象中任何一个synchronized方法)。这时,不同的对象实例的synchronized方法是不相干扰的。也就是说,其它线程照样可以同时访问相同类的另一个对象实例中的synchronized方法; 2)是某个类的范围,synchronized static astaticmethod{}防止多个线程同时访问这个类中的synchronized static 方法。它可以对类的所有对象实例起作用。 2、除了方法前用synchronized关键字,synchronized关键字还可以用于方法中的某个区块中,表示只对这个区块的资源实行互斥访问。用法是: synchronized(this){},它的作用域是当前对象; 3、synchronized关键字是不能继承的,也就是说,基类的方法synchronized f(){} 在继承类中并不自动是synchronized f(){},而是变成了f(){}。继承类需要你显式的指定它的某个方法为synchronized方法; 原文地址为: http://koxwow.javaeye.com/blog/743989 里面讲的非常详细
class MyThread5 implements Runnable { static int n=0; public void run() { Synchronized(this) { n++; try { Thread.sleep(1); } catch(InterruptedException e) { return; } System.out.println(Thread.currentThread().getName()+" "+n); } } } public class TestSynchronized { public static void main(String[] args) { MyThread5 s = new MyThread5(); Thread a = new Thread(s); Thread b = new Thread(s); a.start(); b.start(); } 就这个 }
1 这个对象就相当于一扇门,里面锁着的是共享的资源,每次只能有一个人能进入,并且只能容纳一个人,也就是说只有一个线程能获得这个锁。 2 没有这扇门的话,大家就能一拥而入,对资源进行访问,导致资源的状态混乱,从而出现不正确的结果 3 一般来说,这个对象就是大家要争夺的资源,也就是说,当我使用这个资源的时候,其他人不得执行,但也可以是一个不相干的资源,纯粹是起到锁的作用(高级应用)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
仙游县城东中心小学地址有知道的么?有点事想
单选题随着我国“入世”。我国民族工业面临着
榜头中心小学地址在什么地方,我要处理点事
82年买的红星贵州茅台酒,国营地方茅台酒厂出
山亭中心小学地址好找么,我有些事要过去
荔城区私立实验小学地址有知道的么?有点事想
男人30岁,一个月工资多少才算合格
秀屿区平海中心小学地址在什么地方,想过去办
莆田市第二实验小学地址有知道的么?有点事想
中心小学(莆田秀屿区)地址好找么,我有些事要
Perl怎么对字符串排
埭头中心小学(莆田秀屿区)地址在什么地方,我
三国的歇后语
我认真了,还要怎么做?
男朋友希望和女友住在一起但却对女友说害怕责
推荐资讯
孔府孔庙里可以拍汉服么
正和物流(井冈东路东50米正和物流)地址有知道
同州铭心金店(信德缘银饰)地址好找么,我有些
丈母娘借了我5万块钱怎么想办法要回来
少年三国志中怎样可以获得体力丹
小丽丝绸地址在什么地方,想过去办事
酷宝贝外贸1+1地址在什么地方,我要处理点事
汇亚专卖店地址有知道的么?有点事想过去
柏泉山庄大桥/范崎路(路口)在什么地方啊,我
彩虹科技大厦在哪里啊,我有事要去这个地方
三锐汽车租赁地址在哪,我要去那里办事
临沂火车站到宅店子的公交路线
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?