[英]mutual exclusion using thread of java
我有这个代码,这是互斥算法
turn = 0 // shared control variable
while (turn != i);
// CS
turn = (turn + 1) % n;
我知道线程如何工作,但实际上我在使用Java中的线程方面并不弱,因此请提出任何建议以帮助我了解如何使用Java线程在真实代码中进行转换
对不起,我的英语不好
互斥通常以最简单的形式通过将方法标记为同步来实现。 通过将对象的方法标记为已同步,一次只能有一个线程执行该对象的方法。 拥有该方法的对象是监视器。
另外,您可以在代码本身中定义一个同步块,将对象传递给它以充当监视器。
我相信您可以通过定义具有您想要执行的逻辑的Runnable对象,以更简单的方式实现相同的目的。 在需要互斥的地方,定义一个同步方法。
然后,可以将该Runnable实例传递给所需的多个线程。 由于它们都引用相同的Runnable,因此对同步方法的调用将是互斥的。
这不是唯一的方法,但应该是您所追求的。 希望这可以帮助。
此代码不是互斥的,请考虑以下执行-
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.