`

java并发面试题

 
阅读更多

1.  java中有几种方法可以实现一个线程?
    答:两种方法:  实现Runnable的 run接口或者继承 Thread类 重写run方法
2.  如何停止一个正在运行的线程?
    答:引入共享变量,通过修改线程的变量值使线程安全停止运行;stop和 interrupt 不安全
3.  notify()和notifyAll()有什么区别?
     答:notify只是针对对象锁监视的随机的单个唤醒线程  notifyall可以针对对象锁监视的所有线程进行唤醒操作
     为什么需要notify?因为对象执行了于wait方法.什么执行wait方法?同步的需要
     参考网址:http://www.jb51.net/article/36657.htm
      http://www.jb51.net/article/37868.htm
      http://stackoverflow.com/questions/37026/java-notify-vs-notifyall-all-over-again
4. sleep()和 wait()有什么区别?
   答:sleep 是Thread的静态方法  wait是 object对象的方法  ;  sleep  控制线程的运行状态  wait是处理线程之间的通信问题
   参考 http://blog.csdn.net/liuzhenwen/article/details/4202967
5. 什么是Daemon线程?它有什么意义?
  答:所谓后台(daemon)线程,是指在程序运行的时候在后台提供一种通用服务的线程,并且这个线程并不属于程序中不可或缺的部分。
  因此,当所有的非后台线程介绍时,程序也就终止了,同时会杀死进程中的所有后台线程。
  反过来说,只要有任何非后台线程还在运行,程序就不会终止。
  必须在线程启动之前调用setDaemon()方法,才能把它设置为后台线程。
  注意:后台进程在不执行finally子句的情况下就会终止其run()方法。
6. java如何实现多线程之间的通讯和协作?
 答:通过Object对象的三个方法 wait  notify   notifyAll 增加上同步synchnoize(对象锁)

未完待续...

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics