|
|
1
11
在两者上同步
如果不对帐户进行排序,那么如果一个线程从A转移到B,另一个线程从B转移到A,就有可能出现死锁。 本示例将在第207页(共页)中讨论 Java Concurrency in Practice ,对于任何从事多线程Java开发的人来说都是一本非常重要的书。示例代码可从 publisher's website : |
|
|
2
3
|
|
3
2
您可能需要一个完整的事务支持(当然,如果它是一个真正的应用程序)。 解决问题的难度几乎不取决于您所处的环境。请详细描述您的系统,我们将尽力帮助您(什么样的应用程序?它使用web服务器吗?哪个web服务器?什么用于存储数据?以此类推) |
|
|
4
1
如果可以保证所有访问都是通过transfer方法进行的,那么最简单的方法可能就是将transfer设置为同步方法。这将是线程安全的,因为这保证了在任何时候只有一个线程运行传输方法。 如果其他方法也可以访问AccountService,那么您可能会决定让它们都使用一个全局锁。一种简单的方法是将访问AccountService的所有代码放在一个synchronized(X){…}块中,其中X是某个共享/单例对象实例(可能是AccountService实例本身)。这将是线程安全的,因为在任何时候只有一个线程访问AccountService,即使它们使用不同的方法。 如果这仍然不够,那么您需要使用更复杂的锁定方法。一种常见的方法是在修改帐户之前单独锁定帐户。。。但是,您必须非常小心地按照一致的顺序(例如,按帐户ID)使用锁,否则您将遇到死锁。 最后,如果AccountService是一个远程服务,那么您将进入分布式锁定领域。。。。除非你有计算机科学博士学位和多年的研究预算,否则你应该避免去那里。 |
|
|
5
0
你不能避免使用
|
|
|
Rishab · 在并行Java中运行函数 1 年前 |
|
|
Deep · 当您并行化代码时,如何保存两个独立的CSV? 1 年前 |
|
|
Setu · MPI代码的哪些部分是复制的,哪些是共享的? 1 年前 |
|
|
heyula · 如何在mpi中定义本地数组? 2 年前 |
|
|
Rebel · 如何以最有效的方式加速和并行化以下matlab代码? 2 年前 |