ITPub博客

首页 > 应用开发 > Java > 好程序员Java培训分享Java多线程常见面试问题

好程序员Java培训分享Java多线程常见面试问题

原创 Java 作者:好程序员 时间:2020-09-07 15:21:24 0 删除 编辑

   好程序员Java 培训分享 Java 多线程常见 面试 问题, 本篇文章 好程序员 小编给想要参加Java 培训或者是自学 Java 准备面试的小伙伴讲解一下 Java 面试中多线程常见问题,希望可以帮助小伙伴顺利高薪就业。

   1 、在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别 ?

   这个线程问题主要用来检测你是否熟悉JDK5 中的并发包。这两个的区别是 CyclicBarrier 可以重复使用已经通过的障碍,而 CountdownLatch 不能重复使用。

   2 、你将如何使用 threaddump? 你将如何分析 Threaddump?

   在UNIX 中你可以使用 kill-3 ,然后 threaddump 将会打印日志,在 windows 中你可以使用” CTRL+Break ”。非常简单和专业的线程面试问题,但是如果他问你怎样分析它,就会很棘手。

   3 、你在多线程环境中遇到的共同的问题是什么 ? 你是怎么解决它的 ?

   多线程和并发程序中常遇到的有Memory-interface 、竞争条件、死锁、活锁和饥饿。问题是没有止境的,如果你弄错了,将很难发现和调试。这是大多数基于面试的,而不是基于实际应用的 Java 线程问题。

   4 、为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法 ?

   这是另一个非常经典的java 多线程面试问题。这也是我刚开始写线程程序时候的困惑。现在这个问题通常在电话面试或者是在初中级 Java 面试的第一轮被问到。这个问题的回答应该是这样的,当你调用 start() 方法时你将创建新的线程,并且执行在 run() 方法里的代码。但是如果你直接调用 run() 方法,它不会创建新的线程也不会执行调用线程的代码。

   5 、什么是不可变对象,它对写并发应用有什么帮助 ?

   另一个多线程经典面试问题,并不直接跟线程有关,但间接帮助很多。这个java 面试问题可以变的非常棘手,如果他要求你写一个不可变对象,或者问你为什么 String 是不可变的。

   6 、 Java 中你怎样唤醒一个阻塞的线程 ?

   这是个关于线程和阻塞的棘手的问题,它有很多解决方法。如果线程遇到了IO 阻塞,我并且不认为有一种方法可以中止线程。如果线程因为调用 wait() 、 sleep() 、或者 join() 方法而导致的阻塞,你可以中断线程,并且通过抛出 InterruptedException 来唤醒它。

   7 、补充的其它几个问题:

   1) 在 java 中绿色线程和本地线程区别 ?

   2) 线程与进程的区别 ?

   3) 什么是多线程中的上下文切换 ?

   4) 死锁与活锁的区别,死锁与馅饼的区别 ?

   5)Java 中用到的线程调度算法是什么 ?

   6) 在 Java 中什么是线程调度 ?

   7) 在线程中你怎么处理不可捕捉异常 ?

   8) 什么是线程组,为什么在 Java 中不推荐使用 ?

   9) 为什么使用 Executor 框架比使用应用创建和管理线程好 ?

   10) 在 Java 中 Executor 和 Executors 的区别 ?

   11) 如何在 Windows 和 Linux 上查找哪个线程使用的 CPU 时间最长 ?


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69913864/viewspace-2717674/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-03-20

  • 博文量
    342
  • 访问量
    195009