我用synchronized方法写了个在线计数器,哪儿错了 int i = 0;

synchronized (new Integer(i)) {
i++;
}
System.out.println("i=" + i);每次页面请求后打印出来都是 i=1,没有增加

解决方案 »

  1.   

    代码有问题。你每次页面请求后执行这个方法。变量 i 就又重新赋值了。所以一直会是1;实现这样的在线计数器。建议使用 application 内置对象。
      

  2.   

    每次访问到int i=0;的时候 都会把i的值初始化为0,然后i++;然后i变成了1,然后又初始化int i=0;然后……
      

  3.   


    谢谢,我放到构造器中就解决了,不过application也不错
            private int count; public Hello() {

    count=0;
    }
    synchronized (new Integer(count)) {
    count++;
    }
    out.print("当前页面访问量为:"+count);