请问一个synchronized 锁方法问题

sigma_2010 2018-07-31 11:38:04
Class TestSync{
private synchronized void test() {
String a="100";
}
}

都说synchronized 非静态的锁方法是锁当前对象,究竟当前对象是指哪个。。新手不太理解
...全文
172 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
大人ssp 2018-07-31
  • 打赏
  • 举报
回复
静态synchronized方法的锁是Java文件对应的Class对象,而非静态synchronized方法的锁是是个实例对象
weixin_42466285 2018-07-31
  • 打赏
  • 举报
回复
TestSync
verejava 2018-07-31
  • 打赏
  • 举报
回复
TestSync obj = new TestSync();

当前对象 obj

Java 多线程 之 银行ATM实例


http://www.verejava.com/?id=16992914422268
Tick-Tock 2018-07-31
  • 打赏
  • 举报
回复
TestSync 对象1 = new TestSync();
TestSync 对象2 = new TestSync();

对象1.test();锁的是对象1
对象2.test();锁的是对象2

对象1和对象2的test()可以同时执行,不会互斥
maradona1984 2018-07-31
  • 打赏
  • 举报
回复
当前对象就是当前对象,this这个关键字是否知道?就是这个指向的对象
Chenmoooooooooo 2018-07-31
  • 打赏
  • 举报
回复
就是你实例化的对象中,调用了非静态同步方法的那个对象。

50,639

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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