Java - 同步多个线程

时间:2017-05-09 16:28:13

标签: java multithreading synchronization

假设我在应用程序的各个部分运行了五个线程 - 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。

0 个答案:

没有答案