gpt4 book ai didi

java - ReentrantLock 是否足够安全以保护对静态变量的多线程访问

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:54:52 26 4
gpt4 key购买 nike

我有一个带有静态变量的类,多个线程都会有这个类的实例。

我关心的静态变量是一个Thread,它将从队列中弹出一条消息并通过电子邮件发送,直到队列为空。每次将消息添加到队列时,我都会检查线程是否还活着。如果没有,我会重新启动它。

if (mailThread == null)
{
mailThread = new Thread(mailSender);
mailThread.start();
}
else if (!mailThread.isAlive())
{
mailThread = new Thread(mailSender);
mailThread.start();
}

another question ,据说静态变量应该在同步块(synchronized block)中使用。

我的问题是,仅对这些 if 检查使用 ReentrantLock 是否安全?还是我需要使用 synchronized?还是两者兼而有之?

最佳答案

您可以使用 ReentrantLock 或同步块(synchronized block)。两者同样安全。虽然在某些情况下性能会有所不同。查看这些基准:Benchmark 1 Benchmark 2 .

关于java - ReentrantLock 是否足够安全以保护对静态变量的多线程访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35535797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com