国家计算机二级考试题目答案出错。 题目如下:
问:
当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
答 : 不可以。synchronized 方法都必须获得调用该方法的类实例的锁方能执行,否则所属线程阻塞,方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放,此后被阻塞的线程才能获得该锁,重新进入可执行状态。
这答案明显是错了。
假设我们有个类叫Test,里面有个synchronized 方法 a(), 同时有个non synchronized 方法b(), 假设有线程T1进入了Test 对象t的方法a,同时线程T2要进入方法b(),这当然是可以了。
非同步方法根本就不去check对象锁,为什么不能让b执行? 写个例子
package org.gc.java.lang;
public class TestThread extends Thread {
SynClass synClass;
public TestThread(SynClass synClass){
this.synClass = synClass;
}
public void run(){
synClass.test();
System.out.println(Thread.currentThread().getName() + " " + synClass.hashCode());
synClass.addMore();
}
public static void main(String[] args) {
SynClass a = new SynClass();
for (int i=0; i<3; i++){
new TestThread(a).start();
}
}
}
class SynClass{
public synchronized void addMore(){
System.out.println(Thread.currentThread().getName()+ " enter the synchronized block");
try {
Thread.currentThread().sleep(5000L);
} catch (Exception e){
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+ " leave the synchronized block");
}
public int test(){
try {
System.out.println(Thread.currentThread().getName() + " start test method ");
//Thread.currentThread().sleep(150);
System.out.println(Thread.currentThread().getName() + " complete test method ");
}catch (Exception e){
e.printStackTrace();
}
return 1000;
}
}
得到输出:
Thread-0 start test method
Thread-0 complete test method
Thread-0 827574
Thread-0 enter the synchronized block
Thread-1 start test method
Thread-1 complete test method
Thread-1 827574
Thread-2 start test method
Thread-2 complete test method
Thread-2 827574
Thread-0 leave the synchronized block
Thread-2 enter the synchronized block
Thread-2 leave the synchronized block
Thread-1 enter the synchronized block
Thread-1 leave the synchronized block
说明问题了。
分享到:
相关推荐
这个压缩包包含的"Intro to Java Programming, Comprehensive Version SC"和"exercise"两个子文件,分别对应了书中的源码示例和课后练习题答案,对于学习者来说是极其宝贵的资源。 在"Intro to Java Programming"中...
因上传大小限制,此压缩版为分卷压缩之一,一共两个。JAVA语言程序设计第10版基础篇及进阶篇代码及习题答案!
标题中的“二级公共基础电子书及专用考试软件”指的是针对计算机等级考试中二级公共基础知识部分的学习资源。这个压缩包包含了两部分重要的学习材料:一本电子书和一个专用的考试模拟软件,均是最新版本,旨在帮助...
因上传大小限制,此压缩版为分卷压缩之二,一共两个。JAVA语言程序设计第10版基础篇及进阶篇代码及习题答案!
大家看好了说明,再下载,别浪费了自己的资源分。...二级导航菜单、鼠标移动显示当前层内容,有的网站首页用此功能。 强烈抗意某用户。要的资源分高却不给功能。 所以小弟发布此功能。他要10分,我只需5分。
因为小弟权限不够,所以分开两个帖子上存,资源名称分别是: Java数据结构和算法中文第二版(1) Java数据结构和算法中文第二版(2) 【内容简介】 本书可帮助读者: 通过由基于JAVA的演示所组成的可视专题讨论来掌握...
bug可能也有,但是小弟我也很有成就感啊。多多批评指点。” 这段描述表明,这是一个初级开发者的学习成果,他可能对Java的基础知识有了一定的理解,但经验和技巧还有待提升。初学者通常会在代码效率、错误处理和...
Java面试笔试是评估应聘者技术水平和解决问题能力的重要环节。在这个环节中,面试官通常会针对Java语言的基础知识、编程能力、框架应用、并发处理、设计模式、数据库操作、系统架构等多个方面提出问题。以下是一些...
标题《JAVA教程 pdf》和描述“觉得不错,我学习Java时候用的,不知道你们认为怎么样,说说你们看法,小弟刚来,多多指教”指向了一本关于Java编程语言的教程,该教程用于帮助学习者掌握Java编程的基础知识和高级应用...
锐捷一个大赛题目 并配答案 以后回发更多题目 小弟是菜鸟 谢谢大家 指教啊
第24题是称重问题,通过不同数量的药丸组合,可以判断哪一罐的药丸较重,例如1号罐取1丸,2号罐取2丸,3号罐取3丸,4号罐取4丸,如果总重量比预期重几克,就说明几号罐的药丸有问题。 第25题是时间测量问题,通过...
神通数据库是中国的一款关系型数据库管理系统,它提供了丰富的数据管理功能,广泛应用于企业级应用系统中。在Java开发环境中,为了实现Java程序与神通数据库的交互,我们需要使用特定的Java连接驱动,也就是JDBC驱动...
写的比较粗糙,请各位大虾指教.。。。。。。。。。。。。。。。。。。。。。。
一个Java纯文本数据库模型系统,正在开发中,有兴趣的话希望大家能帮助小弟改进。
这是冈萨雷斯《数字图像处理》书(《Digital Image Processing》)所有习题的答案(instuctor's manual),小弟也是得来不易,大家一起分享吧,这本知名的书想必不用我更多介绍了。
《计算机网络(第四版)》的课后答案 电子工业出版社
小弟我觉得J2EE不好玩,没有J2ME好玩,所以就随便搞了下,然后就是我是第一次做网站,当然免不了有漏洞,希望大家发 现了可以及时的联系我本人!我最喜欢学习JAVA精神,也是就开源,只要是我做的东西,我都会和...
1. **想象力与创新思维**:鼠小弟对每种动物能力的想象,如“要是我也有翅膀”、“要是我也会爬树”,展示了儿童丰富的想象力和对未知世界的探索欲望。这启发孩子们在面对问题时,要敢于想象,尝试不同的解决方案。 ...
在Java编程语言中,继承是一种面向对象编程的重要特性,它允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法。这有助于代码重用,减少冗余,并实现多态性。在这个特定的程序中,我们看到了一个关于...
《深入Java虚拟机(第二版)》是一本深入解析Java虚拟机(JVM)的权威著作,由专家Bill Venners撰写。这本书旨在帮助Java开发者理解JVM的内部工作机制,从而提升程序性能、优化内存使用并解决运行时问题。通过学习这...