A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 垂天云 高级黑马   /  2013-9-5 07:23  /  1806 人查看  /  3 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 垂天云 于 2013-9-5 07:25 编辑


通过看毕老师的视频,总结出一些面试时,常考的多线程知识点,请参考,欢迎纠错,欢迎补充!

一、调用线程的run方法与start方法有什么不同?

调用run方法依旧是主线程执行代码,新建线程没有开启。
调用start方法不仅运行了run中的方法,并开启了线程。


二、创建线程的两种方式有什么区别?

创建线程有实现方式和继承方式。
两者的区别是:
继承Thread:线程代码存放在Thread子类的run方法中。
实现Runnable:线程代码存在Runnable接口的子类run方法中。
需要注意的是:局部变量在每一个线程中都独有一份。
实现方式:避免了单继承的局限性。
在定义进程时,建议使用实现方式。


三、懒汉式和饿汉式有什么不同?

饿汉式——实例正常加载
懒汉式——实例延时加载
懒汉式在多线程访问的时候会出现安全问题,通过加同步的方式解决;
可以加同步代码块或者同步函数,但都比较低效;
再通过双重判断的方式解决效率问题,
PS:加同步的时候锁是该类所属的字节码文件。
代码示例:
  1. if(s==null)

  2. {

  3. synchronized(Single.class)

  4. {

  5. if(s==null)

  6. s = new Single();

  7. return s;

  8. }

  9. }

复制代码
四、写一个死锁程序


  1. class Test implements Runnable
  2. {
  3. private boolean flag;
  4. Test(boolean flag)
  5. {
  6. this.flag = flag;
  7. }

  8. public void run()
  9. {
  10. if(flag)
  11. {
  12. while(true)
  13. {
  14. synchronized(MyLock.locka)
  15. {
  16. System.out.println(Thread.currentThread().getName()+"...if locka ");
  17. synchronized(MyLock.lockb)
  18. {
  19. System.out.println(Thread.currentThread().getName()+"..if lockb");
  20. }
  21. }
  22. }
  23. }
  24. else
  25. {
  26. while(true)
  27. {
  28. synchronized(MyLock.lockb)
  29. {
  30. System.out.println(Thread.currentThread().getName()+"..else lockb");
  31. synchronized(MyLock.locka)
  32. {
  33. System.out.println(Thread.currentThread().getName()+".....else locka");
  34. }
  35. }
  36. }
  37. }
  38. }
  39. }


  40. class MyLock
  41. {
  42. static Object locka = new Object();
  43. static Object lockb = new Object();
  44. }

  45. class DeadLockTest
  46. {
  47. public static void main(String[] args)
  48. {
  49. Thread t1 = new Thread(new Test(true));
  50. Thread t2 = new Thread(new Test(false));
  51. t1.start();
  52. t2.start();
  53. }
  54. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1 很给力!

查看全部评分

3 个回复

倒序浏览
写的挺好的,发现好多童鞋都考到这些。
回复 使用道具 举报
{:soso_e179:}支持
回复 使用道具 举报
学习学习。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马