关于synchronized加锁对象的问题

naruto770 2010-10-27 10:14:08
package com.thread.demo;

public class SynchronizedDemo {
/**
* @尝试同步代码块,在代码块内,将获得对象的锁,使得在该代码块执行期间其他线程不能修改对象.
*/
public static void main(String[] args) {
StringBuffer sb=new StringBuffer("A");
MyThread mt=new MyThread(sb);
mt.setName("mt");
mt.start();

MyThread mk=new MyThread(sb);
mk.setName("mk");
mk.start();

MyThread ms=new MyThread(sb);
ms.setName("ms");
ms.start();
}

}
class MyThread extends Thread{
private StringBuffer sb;
public MyThread(StringBuffer sb){
this.sb=sb;
}
public void run(){
synchronized (sb){//这里加锁的是sb,把sb换成this可不可以,区别有什么
for(int i=0;i<99;i++){
System.out.print(Thread.currentThread().getName()+":"+ sb);
System.out.println();
}
char temp=sb.charAt(0);
++temp;
sb.setCharAt(0, temp);
}
}
}
学习中不理解这个this,求高人指点
...全文
307 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rainy- 2010-10-29
  • 打赏
  • 举报
回复
this是指类自身
jayqean 2010-10-29
  • 打赏
  • 举报
回复
要保证对同一对象进行同步
sb就是同一对象,同一对象就是sb
limengchengg 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 y461517142 的回复:]

this是指类自身
[/Quote]
this是指类的一个对象本身
类本身的话要用 this.class
limengchengg 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 y461517142 的回复:]

this是指类自身
[/Quote]
this是指类的一个对象本来
类本身的话要用 this.class
naruto770 2010-10-28
  • 打赏
  • 举报
回复
没人解答么....高人哪里去了呢
kString 2010-10-27
  • 打赏
  • 举报
回复
synchronized (sb)=synchronized (this.sb)

naruto770 2010-10-27
  • 打赏
  • 举报
回复
自己先顶一下喽,都沉下去了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧