设为首页 收藏本站
查看: 894|回复: 0

[经验分享] IBM Java多线程

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-10-5 11:15:20 | 显示全部楼层 |阅读模式
其它线程 API 详细信息
1. wait()、notify() 和 notifyAll() 方法
2. 线程优先级
3. 线程组
4. SwingUtilities


wait()、notify() 和 notifyAll() 方法第 1 页(共4 页)



  除了使用轮询(它可能消耗大量 CPU 资源,而且具有计时不精确的特征),Object 类还包括一些方法,可以让线程相互通知事件的发生。
  Object 类定义了 wait()notify()notifyAll() 方法。要执行这些方法,必须拥有相关对象的锁。
  Wait() 会让调用线程休眠,直到用 Thread.interrupt() 中断它、过了指定的时间、或者另一个线程用 notify()notifyAll() 唤醒它。
  当对某个对象调用 notify() 时,如果有任何线程正在通过 wait() 等待该对象,那么就会唤醒其中一个线程。当对某个对象调用 notifyAll() 时,会唤醒所有正在等待该对象的线程。
  这些方法是更复杂的锁定、排队和并发性代码的构件。但是,notify()notifyAll() 的使用很复杂。尤其是,使用 notify() 来代替 notifyAll() 是有风险的。除非您确实知道正在做什么,否则就使用 notifyAll()
  与其使用 wait()notify() 来编写您自己的调度程序、线程池、队列和锁,倒不如使用 util.concurrent 包(请参阅参考资料),这是一个被广泛使用的开放源码工具箱,里面都是有用的并发性实用程序。JDK 1.5 将包括 java.util.concurrent 包;它的许多类都派生自 util.concurrent


线程优先级第 2 页(共4 页)



  Thread API 让您可以将执行优先级与每个线程关联起来。但是,这些优先级如何映射到底层操作系统调度程序取决于实现。在某些实现中,多个 ― 甚至全部 ― 优先级可能被映射成相同的底层操作系统优先级。
  在遇到诸如死锁、资源匮乏或其它意外的调度特征问题时,许多人都想要调整线程优先级。但是,通常这样只会把问题移到别的地方。大多数程序应该完全避免更改线程优先级。


线程组第 3 页(共4 页)



  ThreadGroup 类原本旨在用于把线程集合构造成组。但是,结果证明 ThreadGroup 并没有那样有用。您最好只使用 Thread 中的等价方法。
  ThreadGroup 确实提供了一个有用的功能部件(Thread 中目前还没有):uncaughtException() 方法。线程组中的某个线程由于抛出了未捕获的异常而退出时,会调用 ThreadGroup.uncaughtException() 方法。这就让您有机会关闭系统、将一条消息写到日志文件或者重新启动失败的服务。


SwingUtilities第 4 页(共4 页)



  虽然 SwingUtilities 类不是 Thread API 的一部分,但还是值得简单提一下。
  正如前面提到的,Swing 应用程序有一个 UI 线程(有时叫称为事件线程),所有 UI 活动都必须在这个线程中发生。有时,另一个线程也许想要更新屏幕上某样东西的外观,或者触发 Swing 对象上的一个事件。
  SwingUtilities.invokeLater() 方法可以让您将 Runnable 对象传送给它,并且在事件线程中执行指定的 Runnable。它的同类 invokeAndWait() 会在事件线程中调用 Runnable,但 invokeAndWait() 会阻塞,直到 Runnable 完成执行之后。

void showHelloThereDialog() throws Exception {
Runnable showModalDialog = new Runnable() {
public void run() {
JOptionPane.showMessageDialog(myMainFrame, "Hello There");
}
};
SwingUtilities.invokeLater(showModalDialog);
}


  对于 AWT 应用程序,java.awt.EventQueue 还提供了 invokeLater()invokeAndWait()



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-122887-1-1.html 上篇帖子: IBM快速整合Diligent 触动了谁的神经? 下篇帖子: Oracle在硬件领域正式向IBM宣战
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表