方案一:
定义两个CFun对象,a,b
使用FunA,FunB1,FunC1方法时,同步使用对象a.
使用FunB2,FunC2方法时,同步使用对象b.
方案二:
将五个方法,合并为二个方法,通过参数判断执行的语句,两个方法对应楼主说的两种同步方法。
定义两个CFun对象,a,b
使用FunA,FunB1,FunC1方法时,同步使用对象a.
使用FunB2,FunC2方法时,同步使用对象b.
方案二:
将五个方法,合并为二个方法,通过参数判断执行的语句,两个方法对应楼主说的两种同步方法。
如果你要同步一个类里的某个方法,那么将所有的方法都同步
If you need to synchronize one method in a class, synchronize all of them. It’s often difficult to tell for sure if a method will be negatively affected if you leave synchronization out.
不就搞定了可能是考虑性能问题吧
Class CFun
{
private int sycA,sycB;
private void FunA()
{
synchronized(sycA)
{
//函数代码
}
}
private void FunB1()
{
synchronized(sycA)
{
//函数代码
}
}
private void FunC1()
{
synchronized(sycA)
{
//函数代码
}
}
private void FunB2()
{
synchronized(sycB)
{
//函数代码
}
}
private void FunC2()
{
synchronized(sycB)
{
//函数代码
}
}
}
那是不是可以理解,三个线程是可以执行同一个方法的.
如果可以这样理解,那么每个方法前都加synchronized 是不是就否定了三个线程执行同一个方法.