Java中的锁定对象是否需要是静态的?

Ke *_*Sun 4 java multithreading

我知道在C#中你有一个想要用作多线程锁的对象时,你应该在类中声明它是静态的,类实例将在一个单独的线程中运行.

这对Java也适用吗?在线的一些例子似乎将锁定对象声明为最终...

编辑:我有一个资源,我想限制为一次只有一个线程访问.扩展Thread的类将用于创建多个实例并同时启动.我该怎么用?

谢谢.

Bal*_*usC 6

取决于它们将在何种上下文中使用.如果您想要按实例锁定,请static离开.如果你想要一个每类锁,那么使用static.确实保持它final.

  • 如果你想要一个每类锁定,那么你可能做错了什么(它对于缓存这样的东西很有用,但通常可变的静态是坏的). (2认同)