synchronized (new Object()) {
successNum++;
System.out.println("执行成功一条" + ", seq: " + orgInfoValue.getResSeq());
}这样在不是使用多线程的情况下是否会影响性能?直接new Object()在多线程环境下是否会有问题?谢谢!

解决方案 »

  1.   

    昏倒,你这样的同步没有什么意义;以匿名的 new Object()) 作为锁。在多线程情况下,也相当于没有同步,我没有测试,请其他人发表下意见。
      

  2.   

    相比 没有synchronized会影响 ,这是同步付的代价一个对象,只有一个同步锁
    多个对象,就有多个同步锁
    比如a对象 的f方法同步了,那再在a对象调用 f方法就会要求先取得同步锁,如果没取刚,就会阻塞
    但你在对象b上,调用 f 方法,不受a对象 同步锁的影响
      

  3.   

    测试过了,
    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方法,就是说这样的同步没有任何意义。
      

  4.   

    没看懂
    我个人理解是要修改成这样,是吗?synchronized (successNumObj) { 
    successNum++; 
    System.out.println("执行成功一条" + ", seq: " + orgInfoValue.getResSeq()); 
    }successNumObj和successNum都是类的成员变量.这样可以了吗?
      

  5.   

    你这样用是对的!解决了多线程同时修改successNum的问题。