java同步锁锁什么

在今天的苦逼遍代码的过程中,有这样一个问题困扰了我半天:
情景是这样的:有N个线程ThreadTest,在类A中被创建。构造ThreadTest,向其传入A中的成员变量 Integer i;
ThreadTest中的成员变量 j 被赋值为 i
在 ThreadTest 的 run 方法中,我 加入了 synchronized块,对象锁正是 j ;
在synchronized块中,我改变了这个 j 的值。代码大概是这样的:

1
2
3
4
5
6
7
8
9
Integer j;
ThreadTest(Integer i){
j=i;
}
public void run() {
synchronized(j){
j++;
}
}

阅读全文 »