java面试题 --- 线程

1. 什么是线程,线程和进程有什么区别?

  • 线程是程序的最小执行单元;进程是在内存中运行的应用程序,一个进程可能包含若干个线程。

2. 什么是用户线程,什么是守护线程?

  • 用户线程就是运行在前台执行具体任务的线程;守护线程就是运行在后台为其他线程提供基础服务的,比如GC所在的线程。

3. 如何创建守护线程?

  • 可以通过线程 start 之前调用 setDeamon(true) 方法来把线程设置为守护线程。

4. 守护线程有什么特点?

  • 一旦所有的用户线程结束,守护线程会随着 JVM 一起结束工作,所以守护线程中的 finally 块不一定执行;
  • 守护线程中创建的新线程也是守护线程。

5. 创建线程有哪些方式?

  • 继承 Thread 类;
  • 实现 Runnable 接口;
  • 实现 Callable 接口;
  • 通过线程池获取。

6. 说一说线程的生命周期。

被创建 ---> 就绪 ---> 运行 ---> 阻塞 ---> 死亡。

  • 被创建是线程刚被 new 出来;
  • 就绪就是调用了 start 方法等待 cpu 的执行权;
  • 运行就是就绪状态的线程获得了 cpu 时间片;
  • 阻塞就是运行状态的线程由于某些原因放弃了 cpu 的执行权;
  • 死亡就是线程正常或者异常结束,退出了 run 方法,线程就死亡了,死亡的线程不能复生。

7. 你知道线程怎么设置优先级吗?

  • 线程默认优先级是 5,可以通过 setPriority 方法设置,范围是 1 ~ 100。

8. 什么是线程调度器?

  • 是一个操作系统服务,负责为就绪状态的线程分配 CPU 时间,就绪状态的线程必须依赖线程调度器才能获得执行权。

9. 什么叫时间分片?

  • 将可用的 cpu 时间分配给就绪状态的线程的过程。

10. 你知道哪些线程调度算法?

常见的有分时调度和抢占式调度两种算法。

  • 分时调度就是让线程轮流获得 CPU 的执行权,并且平均分配每个线程的时间片;
  • 抢占式调度就是可以为线程设置优先级,优先级高的优先获得执行权,优先级相同的随机选择一个线程执行,JVM 采用的就是这种调度方式。

11. 哪些情况下线程会终止?

  • 时间片用完;
  • 优先级更高的线程出现;
  • IO 操作受阻;
  • 调用 sleep 方法进入了休眠状态;
  • 调用 yield 让出了 CPU 执行权。

12. 线程间怎么通信?

  • wait 和 notify;
  • await 和 signal;
  • park 和 unpark。

13. 什么是线程的同步和互斥?

  • 线程的互斥就是操作共享数据时的排他性,共享数据在同一时刻只能被一个线程操作;
  • 线程的同步是在互斥的基础上,通过一些机制来实现多个线程对资源的有序访问。

14. 有哪些方式来实现线程的同步?

  • 临界区:通过对多线程的串行化来访问公共资源或一段代码;
  • 互斥对象:只有拥有互斥对象的线程才有访问公共资源的权限;
  • 信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目;
  • 事件对象:通过通知的方式来保持线程的同步。

15. java 中实现线程同步的方式有哪些?

  • 同步方法、同步代码块、volatile、并发包中的 Lock、ThreadLocal、阻塞队列、原子变量。

16. 线程的 run 和 start 方法有什么区别?

  • 调用 run 方法相当于在当前线程调用了一个普通的方法,并不会创建新线程,调用 start 方法才会创建新线程。

17. 用过 wait 和 notify 吗,说说你对它们的了解?

  • wait 和 notify 可以实现线程间的等待唤醒。它们被定义在 Object 类中,因为任意对象都能做锁对象,而 wait 和 notify 就是被锁对象调用的,为了能被任意对象调用,所以只能定义在 Object 类中。wait 和 notify 被调用的前提是持有锁,所以一定得在同步代码块或者同步方法中调用。wait 的时候一定要用 while 循环去判断,不能用 if,否则可能会收到虚假唤醒。

18. yield 方法有什么作用?

  • yield 方法是当前线程让出自己的执行权,重新进入就绪状态,当然进入就绪状态后也有可能又是自己抢到了执行权。

19. servlet 线程是否安全?

  • servlet 单例多线程,线程不安全;
  • struts 多实例多线程,线程安全;
  • springMVC 单实例多线程,线程不安全。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容