读书人

【口试】当一个线程进入一个对象的一个

发布时间: 2012-10-06 17:34:01 作者: rapoo

【面试】当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

问题:当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

回答:不能,一个对象的一个synchronized方法只能由一个线程访问。?
纠正:对象的synchronized方法不能进入了,但它的其他非synchronized方法还是可以访问的。

?

?

public class ThreadTest { int i = 0; int j = 0; public static void main(String[] args) { final ThreadTest threadTest = new ThreadTest(); new Thread() { public void run() { threadTest.printI(); } }.start(); new Thread() { public void run() { threadTest.printJ(); } }.start(); } public synchronized void printI() { while (i < 100) System.out.println("i==" + i++); } public void printJ() { while (j < 10) System.out.println("j==" + j++); } }

?运行结果:

C:\Program Files\Notepad++>java -cp "D:\shanshan\java" "ThreadTest"i==0i==1j==0i==2j==1i==3j==2i==4j==3i==5j==4i==6j==5i==7j==6i==8j==7i==9j==8i==10j==9i==11i==12i==13i==14i==15i==16i==17i==18i==19i==20i==21i==22i==23i==24i==25i==26i==27i==28i==29i==30i==31i==32i==33i==34i==35i==36i==37i==38i==39i==40i==41i==42i==43i==44i==45i==46i==47i==48i==49i==50i==51i==52i==53i==54i==55i==56i==57i==58i==59i==60i==61i==62i==63i==64i==65i==66i==67i==68i==69i==70i==71i==72i==73i==74i==75i==76i==77i==78i==79i==80i==81i==82i==83i==84i==85i==86i==87i==88i==89i==90i==91i==92i==93i==94i==95i==96i==97i==98i==99C:\Program Files\Notepad++>pause请按任意键继续. . .

?

太深奥了 米有看懂,,,,,, 晕 15 楼 EnochFallen 2012-08-09 把你的循环改成了50,下面是结果:
i==0
i==1
i==2
i==3
i==4
i==5
i==6
i==7
i==8
i==9
i==10
i==11
i==12
i==13
i==14
i==15
i==16
i==17
i==18
i==19
i==20
i==21
i==22
i==23
i==24
i==25
i==26
i==27
i==28
i==29
i==30
i==31
i==32
i==33
i==34
i==35
i==36
i==37
i==38
i==39
i==40
i==41
i==42
i==43
i==44
i==45
i==46
i==47
i==48
i==49
j==0
j==1
j==2
j==3
j==4
j==5
j==6
j==7
j==8
j==9

读书人网 >编程

热点推荐