可能重复:
同步静态方法如何在Java中工作?
有人能让我理解以下两个功能之间的根本区别:
public static void synchronized f() {… }
Run Code Online (Sandbox Code Playgroud)
和
public void synchronized f() {… }
Run Code Online (Sandbox Code Playgroud) 全部,如果我要编写一个函数来从Java中的linkedList删除一个节点(给定headNode和数据作为输入参数).我会找到具有"node.data = data"的节点,并通过将其前一个节点指向其下一个节点*^来删除它.我的问题是,我们是否必须将"待删除"节点指向null?释放记忆?或者GC将处理堆中不再访问的对象.
*^:比如A-> B-> C-> D,如果B.data =数据,则得A-> C. B-> Null是否必要?
如果不清楚请告诉我,我会编辑它.谢谢.
你能检查一下这段代码是否是线程安全/替换同步的功能?喜欢限制访问多个线程?
class CheckSynch{
public static booloean check=true;
public static void func() // I am trying to write alternative code for synchronized function
{
if(check) {
check=false;
//body of function
check=true;
notifyAll();
} else {
wait();
}
}
}
Run Code Online (Sandbox Code Playgroud)