应该是对象,你可以变为Integer试一下。

解决方案 »

  1.   

    只能用于对对象的同步,Object,而int属于基本的数据类型,不过你可以用Integer,这肯定是可以的。
    你可以直接new Object()来进行同步操作。
      

  2.   

    我把源程序改成这样:
    public class kkk implements Runnable
    {
     private int i=0;
     static  int l=0;
     public void setI(int i)
     {
      this.i=i;
     }
     public int getI()
     {
      return this.i;
     }
     public void addI()
     {
      this.i++;
     }
     public void run()
     {
      synchronized(new Integer(i)){
      System.out.println(i);
      try{
      Thread.sleep(0);
      }
      catch(InterruptedException e){}
      addI();  
      System.out.println("Start..."+i);
     }
     }
     public static void main(String args[])
     {
      kkk kkk1=new kkk();
      Thread t1=new Thread(kkk1);
      Thread t2=new Thread(kkk1);
      t1.start();
      
      t2.start();
      }我愿意是打因为:
    0
    Start...1
    1
    Start...2
    为什么老打成:
    0
    0
    Start...1
    Start...2
    难道i没加锁吗???