`
terencewong
  • 浏览: 1019 次
  • 性别: Icon_minigender_1
  • 来自: San Jose
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

小弟问我的计算机等级考试二级Java初级练习题目,答案有问题

阅读更多

国家计算机二级考试题目答案出错。 题目如下:

 

问:

当一个线程进入一个对象的一个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

 

说明问题了。

 

分享到:
评论

相关推荐

    Java语言程序设计原书第10版 源码及课后练习题答案

    这个压缩包包含的"Intro to Java Programming, Comprehensive Version SC"和"exercise"两个子文件,分别对应了书中的源码示例和课后练习题答案,对于学习者来说是极其宝贵的资源。 在"Intro to Java Programming"中...

    JAVA语言程序设计第10版代码习题答案.zip.001

    因上传大小限制,此压缩版为分卷压缩之一,一共两个。JAVA语言程序设计第10版基础篇及进阶篇代码及习题答案!

    二级公共基础电子书及专用考试软件

    标题中的“二级公共基础电子书及专用考试软件”指的是针对计算机等级考试中二级公共基础知识部分的学习资源。这个压缩包包含了两部分重要的学习材料:一本电子书和一个专用的考试模拟软件,均是最新版本,旨在帮助...

    JAVA语言程序设计第10版代码习题答案

    因上传大小限制,此压缩版为分卷压缩之二,一共两个。JAVA语言程序设计第10版基础篇及进阶篇代码及习题答案!

    二级菜单,鼠标指向显示隐藏层

    大家看好了说明,再下载,别浪费了自己的资源分。...二级导航菜单、鼠标移动显示当前层内容,有的网站首页用此功能。 强烈抗意某用户。要的资源分高却不给功能。 所以小弟发布此功能。他要10分,我只需5分。

    Java数据结构和算法中文第二版(1)

    因为小弟权限不够,所以分开两个帖子上存,资源名称分别是: Java数据结构和算法中文第二版(1) Java数据结构和算法中文第二版(2) 【内容简介】 本书可帮助读者: 通过由基于JAVA的演示所组成的可视专题讨论来掌握...

    俄罗斯方块java版

    bug可能也有,但是小弟我也很有成就感啊。多多批评指点。” 这段描述表明,这是一个初级开发者的学习成果,他可能对Java的基础知识有了一定的理解,但经验和技巧还有待提升。初学者通常会在代码效率、错误处理和...

    应聘Java面试笔试时可能出现问题及其答案集锦!

    Java面试笔试是评估应聘者技术水平和解决问题能力的重要环节。在这个环节中,面试官通常会针对Java语言的基础知识、编程能力、框架应用、并发处理、设计模式、数据库操作、系统架构等多个方面提出问题。以下是一些...

    JAVA教程 pdf

    标题《JAVA教程 pdf》和描述“觉得不错,我学习Java时候用的,不知道你们认为怎么样,说说你们看法,小弟刚来,多多指教”指向了一本关于Java编程语言的教程,该教程用于帮助学习者掌握Java编程的基础知识和高级应用...

    锐捷一个大赛题目 并配答案

    锐捷一个大赛题目 并配答案 以后回发更多题目 小弟是菜鸟 谢谢大家 指教啊

    智商考试题(带答案)参考.pdf

    第24题是称重问题,通过不同数量的药丸组合,可以判断哪一罐的药丸较重,例如1号罐取1丸,2号罐取2丸,3号罐取3丸,4号罐取4丸,如果总重量比预期重几克,就说明几号罐的药丸有问题。 第25题是时间测量问题,通过...

    神通数据库java连接驱动.zip

    神通数据库是中国的一款关系型数据库管理系统,它提供了丰富的数据管理功能,广泛应用于企业级应用系统中。在Java开发环境中,为了实现Java程序与神通数据库的交互,我们需要使用特定的Java连接驱动,也就是JDBC驱动...

    小弟刚学java写了个简单的计算器

    写的比较粗糙,请各位大虾指教.。。。。。。。。。。。。。。。。。。。。。。

    java纯文本数据库

    一个Java纯文本数据库模型系统,正在开发中,有兴趣的话希望大家能帮助小弟改进。

    冈萨雷斯《数字图像处理》(第二版)所有习题答案

    这是冈萨雷斯《数字图像处理》书(《Digital Image Processing》)所有习题的答案(instuctor's manual),小弟也是得来不易,大家一起分享吧,这本知名的书想必不用我更多介绍了。

    《计算机网络(第四版)》课后答案

    《计算机网络(第四版)》的课后答案 电子工业出版社

    酷爱JAVA新闻上传发布系统

    小弟我觉得J2EE不好玩,没有J2ME好玩,所以就随便搞了下,然后就是我是第一次做网站,当然免不了有漏洞,希望大家发 现了可以及时的联系我本人!我最喜欢学习JAVA精神,也是就开源,只要是我做的东西,我都会和...

    《鼠小弟-想吃苹果的鼠小弟 (2).ppt

    1. **想象力与创新思维**:鼠小弟对每种动物能力的想象,如“要是我也有翅膀”、“要是我也会爬树”,展示了儿童丰富的想象力和对未知世界的探索欲望。这启发孩子们在面对问题时,要敢于想象,尝试不同的解决方案。 ...

    java继承类实例

    在Java编程语言中,继承是一种面向对象编程的重要特性,它允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法。这有助于代码重用,减少冗余,并实现多态性。在这个特定的程序中,我们看到了一个关于...

    深入Java虚拟机(第二版)

    《深入Java虚拟机(第二版)》是一本深入解析Java虚拟机(JVM)的权威著作,由专家Bill Venners撰写。这本书旨在帮助Java开发者理解JVM的内部工作机制,从而提升程序性能、优化内存使用并解决运行时问题。通过学习这...

Global site tag (gtag.js) - Google Analytics