`

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

    博客分类:
  • Java
 
阅读更多

问题:当一个线程进入一个对象的一个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==0
i==1
j==0
i==2
j==1
i==3
j==2
i==4
j==3
i==5
j==4
i==6
j==5
i==7
j==6
i==8
j==7
i==9
j==8
i==10
j==9
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
i==50
i==51
i==52
i==53
i==54
i==55
i==56
i==57
i==58
i==59
i==60
i==61
i==62
i==63
i==64
i==65
i==66
i==67
i==68
i==69
i==70
i==71
i==72
i==73
i==74
i==75
i==76
i==77
i==78
i==79
i==80
i==81
i==82
i==83
i==84
i==85
i==86
i==87
i==88
i==89
i==90
i==91
i==92
i==93
i==94
i==95
i==96
i==97
i==98
i==99

C:\Program Files\Notepad++>pause
请按任意键继续. . .

 

0
4
分享到:
评论
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
14 楼 heerwa 2011-09-21  
13 楼 kissyssong 2011-09-16  
543089122 写道
这么基础的东西 居然还上首页。。。难道就因为标题够大???

估计是点错了选项了,刚发现被锁定,不能撤销
12 楼 kissyssong 2011-09-16  
langyu 写道
貌似江湖上也没有这样的谣言吧?

看到一个面试题目上写的答案
11 楼 kissyssong 2011-09-16  
287854442 写道
例子完全不足以证明你的论点啊。

恩那
10 楼 kissyssong 2011-09-16  
haoweishow 写道
纠正:对象的synchronized方法不能进入了,但它的其他非synchronized方法还是可以访问的。


也没见你有例子证明,不能访问对象的其他synchronized方法啊???

恩,是的。
9 楼 kissyssong 2011-09-16  
看的面试题目上面有这道题,又觉得答案有些问题,所以才。本只想自己收藏者卡看看的。估计是点错了选项,才跑到首页的。
8 楼 kissyssong 2011-09-16  
我错了,
7 楼 287854442 2011-09-16  
例子完全不足以证明你的论点啊。
6 楼 543089122 2011-09-16  
这么基础的东西 居然还上首页。。。难道就因为标题够大???
5 楼 langyu 2011-09-15  
貌似江湖上也没有这样的谣言吧?
4 楼 inosin 2011-09-15  
辟谣这词用大了
3 楼 samttsch 2011-09-15  
。。。这个还辟谣。。。
2 楼 walldr2161 2011-09-15  
太深奥了  米有看懂,,,,,,
1 楼 haoweishow 2011-09-15  
纠正:对象的synchronized方法不能进入了,但它的其他非synchronized方法还是可以访问的。


也没见你有例子证明,不能访问对象的其他synchronized方法啊???

相关推荐

    多线程,高并发.pdf

    4. 当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法? 5. 简述 synchronized 和 java.util.concurrent.locks.Lock 的异同? 6. 概括的解释下线程的几种可用状态。

    什么是线程?Java中如何创建和管理线程?(java面试题附答案).txt

    通过将 MyRunnable 对象传递给 Thread 类的构造方法,我们创建了一个新的线程,并将 run 方法作为线程的执行逻辑。 除了基本的线程创建和启动,Java还提供了一些管理线程的方法和工具,例如: sleep 方法:使当前...

    JAVA面试题最全集

    写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc。 3.数据类型之间的转换 如何将数值型字符转换为数字(Integer,Double) 如何将数字...

    java面试题(线程和JSP及EJB部分).pdf

    1、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 答:有两种实现方法,分别是继承Thread类与实现Runnable 接口 用synchronized 关键字修饰同步方法 反对...

    超级有影响力霸气的Java面试题大全文档

    wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 17、...

    变态级JAVA程序员面试32问

     第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?  第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被...

    java 面试题 总结

    wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 14、Overload...

    java面试题及答案.doc

    30. 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 31. 编程题: 写一个Singleton的示例。 32. 数组有没有length()这个方法? String有没有length()这个方法? 33、排除...

    JAVA面试题 对JAVA面试有帮助!

     第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?  第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被...

    java面试宝典

    72、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 18 73、线程的基本概念、线程的基本状态以及状态之间的关系 18 74、sleep() 和 wait() 有什么区别? 18 75、socket通信...

    java面试宝典2012版.pdf

    52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 53、线程的基本概念、线程的基本状态以及状态之间的关系 54、简述synchronized和java.util.concurrent.locks.Lock的...

    线程同步面试题深入解析

    用什么关键字修饰同步方法 ? 用synchronized关键字修饰同步方法

    Java 多线程编程面试集锦20道问题解答Java多线程编程高难度面试题及解析

    您将了解线程安全的实现、死锁的避免策略、线程池的使用方法、线程上下文切换的原因与优化、线程同步与互斥的区别、volatile关键字的作用、synchronized关键字的用法等。同时,我们还探讨了多线程编程中 通过研究和...

    Java面试宝典-经典

    52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念、线程的基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock...

    Java面试宝典2010版

    52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念、线程的基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock...

    java面试宝典2012

    52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 37 53、线程的基本概念、线程的基本状态以及状态之间的关系 37 54、简述synchronized和java.util.concurrent.locks.Lock...

    并发编程面试专题.pdf

    1) 现在有 T1、T2、T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行? 2) 在 Java 中 Lock 接口比 synchronized 块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个...

    java面试题大全(2012版)

    52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念、线程的基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock...

    java面试题

    当一个线程进入一个对象的synchronized方法后,其他线程是否可进入此对象的其他方法? 答:其他方法前是否加了synchronized关键字,如果没加则能。 说出servlet生命周期? 答:servlet实例化时调用init方法,得到...

Global site tag (gtag.js) - Google Analytics