二线程java面试题.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二线程java面试题.doc

二、JAVA线程基础知识 1、线程的基本概念、线程的基本状态以及状态之间的关系? 线程: 有时称轻量级进程。 进程中的一个运行实体,是一个CPU调度单位, 资源的拥有者还是进程或称任务。事实上,引入线程主要是为了提高系统的执行效率,减少处理机的空转时间和调度切换(保护现场信息)的时间,以及便于系统管理。 Java中的线程有四种状态分别是:运行(执行)、就绪、阻塞(挂起)、结束。 2、什么叫死锁? 当被锁定的A对象试图访问另一个被锁定的B对象,B对象同时又要访问已被锁定的A对象。这样导致两个线程都在等待另一个线程释放资源,这样就出现了死锁。 3、启动一个线程是用run()还是start()? 启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行,但并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。用于完成一个线程“实际功能”的代码放在run()方法中。Run()方法可以在Thread的子类中重写,也可以在Runable对象中重写 4、sleep() 和 wait() 有什么区别? 搞线程的最爱 (1).sleep是线程类(Thread)的方法,导致此线程在指定时间内暂停执行,让执行机会给与其他线程,但是监控状态依然保持,到时后会自动恢复。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非:(a)“醒来”的线程具有更高的优先级 (b)正在运行的线程因为其它原因而阻塞,调用sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 (2).sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤醒。 (3).synchronized锁定机制可以避免线程间的相互影响,但是我们还需要一种能在线程间进行通信的方法。为达此目地,wait方法允许线程等待,直到某条件成立,通知方法(notificationmethod)notify和notifyAll唤醒线程;且sleep()不释放同步锁,wait()释放同步锁。 5、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 不能,一个对象的一个synchronized方法只能由一个线程访问。 情况一:当一个线程进入一个对象的一个synchronized方法后,其它线程访问该对象的非同步方法。 运行结果:一个线程在访问一个对象的同步方法时,另一个线程可以同时访问这个对象的非同步方法。 情况二:当一个线程进入一个对象的一个synchronized方法后,其它线程也访问该同步方法。 运行结果:一个线程在访问一个对象的同步方法时,另一个线程不能同时访问这个同步方法。 情况三:当一个线程进入一个对象的一个synchronized方法后,其它线程同时访问该对象的另一个同步方法。 运行结果:一个线程在访问一个对象的同步方法时,另一个线程不能同时访问这个对象的另一个同步方法。 6、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? stop()和suspend()方法为何不推荐使用? 答:多线程:(1).继承 Thread 类(2).实现 Runnable 接口再 new Thread(YourRunnableOjbect) (推荐 线程同步:(1).用synchronized修饰需要同步的方法public void synchronized add(){...} (2).用 synchronized 块包围需要同步的语句synchronized (需要同步的对象){...} (3). JDK1.5中使用 java.util.concurrent 包中的各种同步锁 线程同步方法中还可以使用如下四种特定的方法对线程进行调度: wait():使一个线程处于等待状态,并且释放所持有的对象的lock。 sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。 notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。 Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。 反

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档