请教一个关于线程同步的问题。
请看以下代码:
1. class InSync extends Thread {
2. StringBuffer letter;
3.
4. public InSync(StringBuffer letter) {
5. this.letter = letter;
6. }
7.
8. public void run() {
9. synchronized(letter) {
10. for(int i = 1;i<=100;++i) {
11. System.out.print(letter);
12. }
13. System.out.println();
14. // Increment the letter in StringBuffer:
15. char temp = letter.charAt(0);
16. ++temp;
17. letter.setCharAt(0, temp);
18. }
19. }
20.
21. public static void main(String [] args) {
22. StringBuffer sb = new StringBuffer("A");
23. new InSync(sb).start();
24. new InSync(sb).start();
25. new InSync(sb).start();
26. }
27. }
我的问题是:
在MAIN方法中,这里创建了3个不同的实体。他们各自的letter也应该不是同一个实体,但为什么他们synchonized了的方法LOCK住的却是同一个letter呢?同步方法不是只LOCK住当前的一个实体吗?
谢谢!