在java中同时访问同步方法时会发生什么?

时间:2014-04-10 23:30:56

标签: java multithreading synchronized

好的,所以我正在尝试构建一个脚本,它将自动对x台机器进行一些测试......我希望它们能够互相通话。我对线程有点新,我做了一些关于使用synchronized方法的研究。我的问题是,当两个独立的线程试图访问它时会发生什么?我理解它锁定并给予调用者独占访问权限,但是接下来是直接处理的下一个调用吗?我可以让多个线程同时调用相同的函数,我想准备好处理它。我也发现了这一点信息:

  

调用方法时,JVM会为调用创建堆栈帧   执行线程。该框架包含所有局部变量   在方法中声明。在任何方法的情况下,静态或   否则,不访问字段,每次执行都会继续   完全独立于每个线程。如果方法使用参数   在计算中,这些参数也位于堆栈中   框架和多个通话不会相互干扰。

这是在另一篇文章中说的,它没有参考同步方法。对不起,如果我没有说清楚,但我只是想确定从一个线程调用某个函数,它被视为一个堆栈。

1 个答案:

答案 0 :(得分:1)

如果你有一个synchronized方法,并且x个线程试图同时访问它,那么只有一个获得访问权限而其他人只是等待(阻塞),直到有访问权限完成它。如果synchronized方法中允许的线程永远不会退出块,则会出现所谓的死锁。