这个说法对吗?? 当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个说法是对的,synchronized 就是干这个的。 楼上的,但我测试结果发现,不跟这句话说的一直,你帮我看看,public class Thread3 { public void m4t1() { synchronized (this) { int i = 500; while (i-- > 0) { System.out.println(Thread.currentThread().getName() + " : " + i); } } } public void m4t2() { synchronized(this){ int i = 500; while (i-- > 0) { System.out.println(Thread.currentThread().getName() + " : " + i); } } } public static void main(String[] args) { final Thread2 myt2 = new Thread2(); Thread t1 = new Thread(new Runnable() { public void run() { myt2.m4t1(); } }, "t1"); Thread t2 = new Thread(new Runnable() { public void run() { myt2.m4t2(); } }, "t2"); t1.start(); t2.start(); }} 按这句话说就应该先执行完m4t1()方法,然后T2线程才执行m4t2()方法,但我测试结果不是这样 兄弟,你可是创建了2个对象哦,此this不等于彼this!各锁各的,不妨碍 你把二个this打印出来,看看不就知道了? OH SHIT,看错了,Sorry我再看看 被你调戏了!你的final Thread2 myt2 = new Thread2();写错了,应该是Thread3你的Thread2中,应该是没有同步的! hbwhwang() 兄弟你说对了,我粗心了,写错了,难怪结果跟这句话不符合,我通过实践证明当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。 这句话正确.有没有不同的意见.顺便问,这个this是代表这个CLASS的实例吗. this代表这个对象!比如我们写this.i=100,表示把这个对象的数据成员i赋值 顺便问下,嵌套类里最里层可以用this么,如果能用指代哪个对象? 嵌套类的this指嵌套类的对象,如果你要指外围类的对象,用“外围类类名.this”来指明 大牛请进~~~~打开对话框时右键弹出的菜单列表 JAVA获取一个程序运行时占用内存大小 头痛啊,大家来帮帮我!!解决马上送分!!是关于使用UDP发送流并解释流的问题 计算器功能键的弧度和角度转换如何设计 renderer问题!help~~ ***连续向jtextpane中写入,发现内存占用上升很快,为什么?大家都来说说看啊! 哪有ROSE下载 我有一个读文件的类,在JSP中一调用它就出错,请高手帮帮忙 我来问一个简单的问题,可是我就是不会:) 求大神帮帮 有关AbstractTableModel的问题 怎么把其它类型的数据如int,short,转换成字节数组。 还有怎么转回来。
public void m4t1() {
synchronized (this) {
int i = 500;
while (i-- > 0) {
System.out.println(Thread.currentThread().getName() + " : " + i);
}
}
} public void m4t2() {
synchronized(this){
int i = 500;
while (i-- > 0) {
System.out.println(Thread.currentThread().getName() + " : " + i);
}
}
} public static void main(String[] args) {
final Thread2 myt2 = new Thread2();
Thread t1 = new Thread(new Runnable() {
public void run() {
myt2.m4t1();
}
}, "t1");
Thread t2 = new Thread(new Runnable() {
public void run() {
myt2.m4t2();
}
}, "t2");
t1.start();
t2.start();
}
}
各锁各的,不妨碍
我再看看
你的
final Thread2 myt2 = new Thread2();
写错了,应该是Thread3
你的Thread2中,应该是没有同步的!
我通过实践证明
当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
这句话正确.有没有不同的意见.
顺便问,这个this是代表这个CLASS的实例吗.
this.i=100,表示把这个对象的数据成员i赋值