b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

多线程避免死锁 50 道Java 线程面试题(经典)(6)

电脑杂谈  发布时间:2018-02-21 20:28:40  来源:网络整理

36) Java 中 Semaphore 是什么?

Java 中的 Semaphore 是一种新的同步类,它是一个计数信号。从概念上讲,从概念上讲,信号量维护了一个许可集合。如有必要,在许可可用前会阻塞每一个 acquire (),然后再获取该许可。每个 release ()添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。信号量常常用于多线程的代码中,比如连接池。更多详细信息请点击这里。

37)如果你提交任务时,线程池队列已满。会时发会生什么?

这个问题问得很狡猾,许多程序员会认为该任务会阻塞直到线程池队列有空位。事实上如果一个任务不能被调度执行那么 ThreadPoolExecutor's submit ()方法将会抛出一个 RejectedExecutionException 异常。

38) Java 线程池中 submit () 和 execute ()方法有什么区别?

两个方法都可以向线程池提交任务,execute ()方法的返回类型是 void,它定义在 Executor 接口中, 而 submit ()方法可以返回持有计算结果的 Future 对象,它定义在 ExecutorService 接口中,它扩展了 Executor 接口,其它线程池类像 ThreadPoolExecutor 和 ScheduledThreadPoolExecutor 都有这些方法。更多详细信息请点击这里。

39) 什么是阻塞式方法?

阻塞式方法是指程序会一直等待该方法完成期间不做其他事情,ServerSocket 的 accept ()方法就是一直等待客户端连接。这里的阻塞是指调用结果返回之前,当前线程会被挂起,直到得到结果之后才会返回。此外,还有异步和非阻塞式方法在任务完成前就返回。更多详细信息请点击这里。

多线程避免死锁_线程异常种类_哪种工作锻炼java

40) Swing 是线程安全的吗? 为什么?

你可以很肯定的给出回答,Swing 不是线程安全的,但是你应该解释这么回答的原因即便面试官没有问你为什么。当我们说 swing 不是线程安全的常常提到它的组件,这些组件不能在多线程中进行修改,所有对 GUI 组件的更新都要在 AWT 线程中完成,而 Swing 提供了同步和异步两种回调方法来进行更新。点击这里查看更多 swing 和线程安全的相关内容。

41) Java 中 invokeAndWait 和 invokeLater 有什么区别?

这两个方法是 Swing API 提供给 Java 开发者用来从当前线程而不是事件派发线程更新 GUI 组件用的。InvokeAndWait ()同步更新 GUI 组件,比如一个进度条,一旦进度更新了,进度条也要做出相应改变。如果进度被多个线程跟踪,那么就调用 invokeAndWait ()方法请求事件派发线程对组件进行相应更新。而 invokeLater ()方法是异步调用更新组件的。更多详细信息请点击这里。多线程避免死锁

42) Swing API 中那些方法是线程安全的?

这个问题又提到了 swing 和线程安全,虽然组件不是线程安全的但是有一些方法是可以被多线程安全调用的,比如 repaint (), revalidate ()。 JTextComponent 的 setText ()方法和 JTextArea 的 insert () 和 append () 方法也是线程安全的。

43) 如何在 Java 中创建 Immutable 对象?


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-87586-6.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 黄敬科
      黄敬科

      从不买

    • 保村真
      保村真

      他有九零后这个群体新锐逗玩不服输的鲜特质

    • 罗佩
      罗佩

      且有最新式速射炮

    热点图片
    拼命载入中...