Java synchronized 锁问题

lqsohu 2014-08-25 10:20:23
一个类中有很多个函数都包含一个同步锁,锁都是同一个对象
method1(){
synchronized(obj){

}
}
method2(){
synchronized(obj){

}
}
method3()
...

该锁的class跑在一个服务进程里, 有很多客户端访问该进程,在一个客户端中发现总是阻塞在method()函数里在等待这个锁被释放,我想知道该锁此时被谁占用了, 其他方法中哪个方法在同步锁的块中做耗时操作?
请问有什么方法吗 最笨的方法是打出每个同步锁方法的时间来判断, 但是如果有方法大家时间都差不多也不是能准确定位
...全文
242 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lds1ove 2014-08-27
  • 打赏
  • 举报
回复
不过打log也是很不错呀 看哪个时间长
lds1ove 2014-08-27
  • 打赏
  • 举报
回复
引用 6 楼 lds1ove 的回复:
android adt 有个ddms 还是神码的能够能记录每个函数的执行时间 你调试一下然后看结果
eclipse
lds1ove 2014-08-27
  • 打赏
  • 举报
回复
android adt 有个ddms 还是神码的能够能记录每个函数的执行时间 你调试一下然后看结果
于金龙 2014-08-27
  • 打赏
  • 举报
回复
你设个全局变量不就行了! 每次方法独占锁的时候,就把方法签名放到这个变量里,方法解锁时,就把该全局变量的值清掉
lqsohu 2014-08-25
  • 打赏
  • 举报
回复
打印真的不一定是个好办法, sync的块好多啊, 有几十个了, 这个service还被很多client调用,所以真心不推荐啊
鱿鱼x 2014-08-25
  • 打赏
  • 举报
回复
交给JVM处理优先级就是难调试。或许可以用打印区分一下
lqsohu 2014-08-25
  • 打赏
  • 举报
回复
谢谢啊, 不过我不是纯Java环境, 我是运行在Android手机平台的
S117 2014-08-25
  • 打赏
  • 举报
回复
用jvisualvm监控吧,JDK自带的,装上插件

62,615

社区成员

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

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