假设我在应用程序的各个部分运行了五个线程 - A , B , C , D 和 E 。他们无法直接相互接触。
当 B , C , D 或 E <时,不允许运行
strong>正在运行。但是 B , C , D 和 E 可以全部运行同时。
如何以简单,优雅的方式协调?
编辑:根据要求提供更多信息:
A 是一个注销线程,由用户操作触发,并将currentUser
变量(可通过LoginManager
单例类访问)设置为null
所有其他线程都是在整个运行过程中在多个位置使用currentUser
对象的各种线程。问题是,如果用户在 B 正在运行时退出,那么在 B 完成访问之前,currentUser
可能会变为null
。所以我希望注销线程( A )等到 B 完成注销之前完成。
我可以在 B 的开头获得currentUser
一次,然后在 B 的持续时间内根据需要传递它,但这意味着要改变几十个类和方法签名,只是为了将这一个变量传递到几个地方。
我还考虑使用synchronized
,但据我所知,这会使 B , C , D 和 E 也是相互排斥的;不仅仅是 A 。
我正在运行Java 7。