`
xiaoyuclub
  • 浏览: 19392 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

一个java面试题

阅读更多
当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?(2nd)



日前在网上见到一道Java笔试试题,如题所述。给出的答案如下:

答:不能,一个对象的一个synchronized方法只能由一个线程访问。



。发现答案要分三种情况讨论。



情况一:

当一个线程进入一个对象的一个synchronized方法后,其它线程访问该对象的非同步方法。

代码如下:

package com.mutithreading.Object;



public class InvokedObject

{

   

    public synchronized void synchronizedMethod()

    {

       System.out.println("Invoked synchronizedMethod !") ;

       try {

           Thread.sleep(10000) ;

       } catch (InterruptedException e) {

           e.printStackTrace();

       }

    }

   

    public void generalMethod()

    {

       System.out.println("Invoked generalMethod ...") ;

    }



}





package com.mutithreading.threads;

import com.mutithreading.Object.InvokedObject;



public class ThreadOne implements Runnable {



    private InvokedObject object ;

   

    public ThreadOne(InvokedObject object)

    {

       this.object = object ;

    }

   

    public void run() {

      

       object.synchronizedMethod() ;



    }



}





package com.mutithreading.threads;

import com.mutithreading.Object.InvokedObject;



public class ThreadTwo implements Runnable {



    private InvokedObject object ;

   

    public ThreadTwo(InvokedObject object)

    {

       this.object = object ;

    }



    public void run() {

       // TODO Auto-generated method stub

       object.generalMethod() ;

    }



}



package com.mutithreading.client;

import com.mutithreading.Object.InvokedObject;

import com.mutithreading.threads.ThreadOne;

import com.mutithreading.threads.ThreadTwo;



public class Client {



    /**

     * @param args

     */

    public static void main(String[] args) {



       InvokedObject object = new InvokedObject() ;

      

       ThreadOne one = new ThreadOne(object) ;

       ThreadTwo two = new ThreadTwo(object) ;

      

       Thread threadOne = new Thread(one) ;

       Thread threadTwo = new Thread(two) ;

      

       threadOne.start() ;

       threadTwo.start() ;



    }



}



运行结果:

一个线程在访问一个对象的同步方法时,另一个线程可以同时访问这个对象的非同步方法。









情况二:

当一个线程进入一个对象的一个synchronized方法后,其它线程也访问该同步方法。



运行结果:

一个线程在访问一个对象的同步方法时,另一个线程不能同时访问这个同步方法。(代码略)









情况三:

当一个线程进入一个对象的一个synchronized方法后,其它线程同时访问该对象的另一个同步方法。



此处仅给出对InvokedObject类做出的修改代码:

package com.mutithreading.Object;



public class InvokedObject

{

   

    public synchronized void synchronizedMethod1()

    {

       System.out.println("Invoked synchronizedMethod1 !") ;

       try {

           Thread.sleep(10000) ;

       } catch (InterruptedException e) {

           e.printStackTrace();

       }

    }

   

    public synchronized void synchronizedMethod2()

    {

       System.out.println("Invoked synchronizedMethod2 !") ;

    }



}





运行结果:

一个线程在访问一个对象的同步方法时,另一个线程不能同时访问这个对象的另一个同步方法


在网上找到的
分享到:
评论

相关推荐

    java面试题,J2EE面试题 笔试题

    最全的j2EE面试题,题量...8、java面试题及答案 9、java面试题编程篇 10、Oracle面试题 11、Oracle企业面试题集锦 12、Spring面试题 13、SSH面试题 14、Strut+Spring+Hibernate面试题 15、张孝祥整理Java就业面试题大全

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集.zip

    Java面试题以及答案(小生).pdf java面试题(题库全).doc JS 数据库答案.doc Land.the.Tech.Job.You.Love-人人都有好工作—IT行业求职面试必读.pdf Linux命令大全完整版.doc sql查询语句练习.doc Web服务器的工作...

    java笔试题笔试题

    java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 ...

    java面试资料java面试题集java笔试题汇总资料

    java面试资料java面试题集java笔试题汇总资料,java面试资料java面试题集java笔试题汇总资料,java面试资料java面试题集java笔试题汇总资料,包括基础面试题、JavaWeb面试题、JAVA面试题集.txt、分布式相关面试题...

    java面试笔试题库java软件设计java笔试题大集合及答案文档资料合集300MB.zip

    Java面试题以及答案(小生).pdf java面试题(题库全).doc JS 数据库答案.doc Land.the.Tech.Job.You.Love-人人都有好工作—IT行业求职面试必读.pdf Linux命令大全完整版.doc sql查询语句练习.doc Web服务器的工作...

    java面试题集锦 java面试题集锦

    以下是对标题和描述中涉及的一些常见Java面试题的详细解释: 1. **JDK 和 JRE 的区别** JDK(Java Development Kit)是用于开发和调试Java程序的完整工具集,包括JRE(Java Runtime Environment)、编译器(javac...

    汇丰软件java面试题

    "汇丰软件Java面试题详解" 汇丰软件Java面试题是许多IT行业新人的梦寐以求的岗位,需要考生具备扎实的Java基础知识和良好的编程能力。以下是对汇丰软件Java面试题的详细解析。 笔试部分 笔试部分主要包含三部分:...

    10万字总结java面试题和答案(八股文之一)Java面试题指南

    JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 ...

    Java面试题以及答案整理.pdf

    为了在Java面试中脱颖而出,了解和掌握常见的面试题及答案至关重要。以下是一些关键知识点的详细解析: 1. **super()与 this()的区别** `super()`用于调用父类的构造器,确保子类实例化时父类的初始化;`this()`则...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....

    Java面试笔试题大汇总(最全+详细答案)

    "Java面试笔试题大汇总(最全+详细答案)"这份资料提供了全面的Java面试题及解答,旨在帮助求职者充分准备,提高面试成功率。 首先,Java的基础知识是任何面试的基础。这包括Java语言的基本语法,如变量、数据类型、...

    java面试笔试资料Java经典项目集锦java笔试题大集合及答案题库java笔试题汇总资料个合集(188).zip

    java面试笔试资料Java经典项目集锦java笔试题大集合及答案题库java笔试题汇总资料个合集(188) 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码....Java面试题以及答案

    java面试笔试题库java学习笔记开发教程互联网公司面试资料大全合集.zip

    Java面试题以及答案(小生).pdf java面试题(题库全).doc JS 数据库答案.doc Land.the.Tech.Job.You.Love-人人都有好工作—IT行业求职面试必读.pdf Linux命令大全完整版.doc sql查询语句练习.doc Web服务器的工作...

    2017java面试题

    "2017java面试题"这个压缩包文件提供了丰富的资源,帮助Java开发者准备面试,深化对Java开发的理解。 文档"Java面试宝典2017.doc"可能包含了以下核心Java知识点: 1. **基础语法**:这包括变量、数据类型、运算符...

    java笔试题面试题

    Java作为一门广泛使用的编程语言,其笔试题和面试题涵盖了众多知识点,对于求职者来说,了解并掌握这些知识点是至关重要的。以下将根据标题、描述和标签,详细解析一些常见的Java笔试题和面试题所涉及的Java核心概念...

    JAVA面试题和笔试题总汇(含答案)

    JAVA面试题和笔试题总汇(含答案)

    张孝祥整理的JAVA面试题宝典下载

    这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试。由于这套面试题涉及的范围很泛,很广,很杂,至少需要一个月的时间才能消化和...

    java面试题 程序员面试 逻辑题 笔试题

    java面试题 程序员面试 逻辑题 笔试题

    Java面试题笔试题大全

    这份“Java面试题笔试题大全”资源旨在帮助求职者全面准备Java相关的技术面试和笔试环节,提升成功几率。CHM(Compiled Help Manual)文件是一种Windows平台下的帮助文档格式,通常包含丰富的文本、例子和代码,便于...

    最新各大公司企业真实面试题-Java面试题

    本压缩包包含了一系列由IT资深专家单兴华整理的最新各大公司企业的真实Java面试题,旨在帮助求职者提升自己的技术水平和面试准备。 首先,我们来看"java练习题2.doc",这可能是针对基础语法和编程技巧的练习,涵盖...

Global site tag (gtag.js) - Google Analytics