我有一个带有静态变量的类,多个线程将拥有该类的实例。
我关心的静态变量是一个名为
我关心的静态变量是一个名为
Thread
的变量,它将从队列中弹出消息并通过电子邮件发送,直到队列为空。每次添加消息到队列时,我都会检查线程是否仍在运行。如果没有,我会重新启动它。if (mailThread == null)
{
mailThread = new Thread(mailSender);
mailThread.start();
}
else if (!mailThread.isAlive())
{
mailThread = new Thread(mailSender);
mailThread.start();
}
在另一个问题中,有人说应该在同步块内使用静态变量。
我的问题是,如果只用ReentrantLock
进行这些if检查,是否安全?还是我需要使用synchronized
?或者两个都需要?
mailThread
不执行任何外部代码。如果你确实需要执行外部代码,最好将其隔离到自己的独立进程中。) - Solomon Slow