多线程同步问题

a928552828 2014-01-15 11:04:59
一个类的对象A的同步方法fun 被线程a调用 另一个线程b调用同类的对象B的同步方法fun 这样会 会同步吗
...全文
401 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
查看余e 2014-01-23
  • 打赏
  • 举报
回复
你的类是什么 样子的阿 你想干什么啊 能说得清楚点不?
梧桐芭蕉 2014-01-21
  • 打赏
  • 举报
回复
suciver 2014-01-15
  • 打赏
  • 举报
回复
看你这个fun方法是什么级别的同步了是类级的还是对象级的,如果是对象级的,你对象A和对象B都是两个不同的对象了当然不会同步。如果是类级的同步,同步锁是字节码class,这个锁在内存中只有一份不管你同类的对象有几个都是同步的
copy202 2014-01-15
  • 打赏
  • 举报
回复
具体分析该方法是类锁还是对象锁
袁慎建 2014-01-15
  • 打赏
  • 举报
回复
楼主你好,你的问题里面有一层深的含义呢,如果说你的那个类中的同步发放格式如下:

class ThreadVO {
	public synchronized void fun() {
		System.out.println("ThreadVO.fun()");
	}
}
这个fun方法的同步锁是对象自身,jthis,所以不同的对象的锁不一样,不能实现同步。 要实现不同对象同步,就必须提供一个全局的锁,让这个类的不同的对象都用这把锁,推荐代码如下:
class ThreadVO {
	public void fun() {
		// 以类对象为锁,同一个ClassLoader中只有一个对象
		synchronized (ThreadVO.class) {
			System.out.println("ThreadVO.fun()");
		}
	}
}
希望楼主学习进步~

62,621

社区成员

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

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