我想创建一个应该在其他 session 中共享的工作线程。基本上我想限制其他用户执行相同的过程。所以他们将通过我创建的对象线程的静态实例检索线程。如果线程还活着,那么他们会被提示错误。
是否有其他方法可以做到这一点,因为我在考虑将 Thread 对象放在静态对象中是否安全?我也在考虑应用程序上下文,但我不确定在 Java 中哪种方法更好?
最佳答案
将任何对象放置在静态或任何类型的共享位置本质上并不安全,但您需要注意设计。
声明
static Thing t;
初始化
if ( t == null ) {
t = new Thing();
}
使用
t.dosomething();
现在如果两个线程同时命中初始化 block 会发生什么?您可以创建两个事物。可能不想这样,所以使用同步。
synchronized void intialise() {
if ( t == null ) {
t = new Thing();
}
}
如果两个线程试图同时使用 t 会发生什么。这取决于Thing做出的 promise 。如果它是线程安全的没问题,否则你的代码需要提供同步
synchronized void doSomthing() {
t.doSomething();
}
关于java - 线程对象可以设置为静态变量吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7172024/