我有一个带有静态变量的类,并且多个线程将具有该类的实例。
我关心的静态变量是 a Thread
,它将从队列中弹出一条消息并通过电子邮件发送,直到队列为空。每次将消息添加到队列时,我都会检查线程是否处于活动状态。如果没有,我重新启动它。
if (mailThread == null)
{
mailThread = new Thread(mailSender);
mailThread.start();
}
else if (!mailThread.isAlive())
{
mailThread = new Thread(mailSender);
mailThread.start();
}
在另一个问题中,据说静态变量应该在同步块中使用。
我的问题是,将 aReentrantLock
用于这些 if 检查是否安全?还是我需要使用synchronized
?或两者?