synchronized (new Object()) {
successNum++;
System.out.println("执行成功一条" + ", seq: " + orgInfoValue.getResSeq());
}这样在不是使用多线程的情况下是否会影响性能?直接new Object()在多线程环境下是否会有问题?谢谢!
successNum++;
System.out.println("执行成功一条" + ", seq: " + orgInfoValue.getResSeq());
}这样在不是使用多线程的情况下是否会影响性能?直接new Object()在多线程环境下是否会有问题?谢谢!
多个对象,就有多个同步锁
比如a对象 的f方法同步了,那再在a对象调用 f方法就会要求先取得同步锁,如果没取刚,就会阻塞
但你在对象b上,调用 f 方法,不受a对象 同步锁的影响
public class Mytest {
public void testsync(int b){
synchronized (new Object()) {
System.out.println(b);
}
}
public static void main(String[] argv){
final Mytest mt=new Mytest();
new Thread(){
public void run(){
mt.testsync(1);
}
}.start();
new Thread(){
public void run(){
mt.testsync(2);
}
}.start();
}
}两个线程可以同时进入同一个对象的testsync方法,就是说这样的同步没有任何意义。
我个人理解是要修改成这样,是吗?synchronized (successNumObj) {
successNum++;
System.out.println("执行成功一条" + ", seq: " + orgInfoValue.getResSeq());
}successNumObj和successNum都是类的成员变量.这样可以了吗?