use*_*288 2 c++ java multithreading synchronization class
给一个C++类foo,里面有一个synchronized方法.我们有两个foo对象,名为f1和f2,如果f1和f2同时运行,我们能保证只有一个线程访问同步方法吗?
我的想法:
使用互斥量,无论谁需要访问该方法,谁获得互斥锁.
这个面试问题似乎并不那么简单.
有解决方案吗
谢谢
在java中,除非方法是静态的,否则需要在外部进行同步,以确保方法一次只能被一个线程调用.
您还可以在类的静态变量上同步方法本身.例如
public class myClass
{
private static Object myLock = new Object();
public void myMethod()
{
synchronized(myLock)
{
// ...
}
}
}
Run Code Online (Sandbox Code Playgroud)