`
adamzhao
  • 浏览: 99398 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Thread概念整理

    博客分类:
  • Java
阅读更多
1. 两种方式实现
   继承 java.lang.Thread和实现Runnable 接口。(好像推荐前者的比较多);
2. 线程状态: new->runnable->running->dead
   创建之后为new,调用start后为runnable(注意此时还没有run),系统执行时为running。 在Thread执行完毕或者出现异常(抛出RuntimeException)时,Thread终止。此时状态为dead,此时如果通过start来调用它会抛出RuntimeException异常
   如果thread在等待资源,或者在试图获得互斥体的时候被阻塞,Thread决定睡眠,进入block状态。在当睡眠周期到期、预期输入到达,或者互斥体当前的拥有者将其释放并通知等候Thread可以再次夺取互斥体时,阻塞的线程重新进入 runnable 状态。系统就可以继续执行了。
   有个图很好,是Javaeye论坛上另外一位老兄的,我只链接到这个图:


3. 典型的操作系统支持方式分为两种:协作式和抢占式。
   在协作式中,Thread对于占用CPU多长时间,什么时候结束有最终意见。(需要了解一下这个最终意见是什么).
   抢占式则系统采用基于时钟可以强行从一个Thread转移到另外一个Thread,可以防止独占的发生。

4. 四个常见缺陷
   争用条件:多个线程之间存在对共享资源的竞争,而胜出者决定系统的行为。因为恭喜资源受到了多个线程的影响,不会按照系统预想的方式运行。
   死锁,两个线程之间互相等待。条件永远不能为真。
   活动锁:(这是一个有趣的概念 )一个简单的示例就是:每个线程已经拥有了一个对象,同时需要另外一个线程拥有的另外一个对象。可以想像这样的情况:每个线程放下自己拥有的对象,捡起另外一个线程放下的对象。
   资源耗尽:。。。

5. lock简单原则
引用
Always lock during updates to object fields.
Always lock during access of possibly updated object fields.
Never lock when invoking methods on other objects.


参考资料:
《Java.Concurrency.in.Practice》
http://www.ibm.com/developerworks/cn/java/j-csp1.html
分享到:
评论

相关推荐

    进程与线程_动力节点Java学院整理.

    在 Java 语言中,对进程和线程的封装,分别提供了 Process 和 Thread 相关的一些类。本文首先简单的介绍如何使用这些类来创建进程和线程,然后着重介绍这些类是如何和操作系统本地进程线程相对应的,给出了 Java ...

    java核心知识点整理.pdf

    27 标记整理算法(Mark-Compact).................................................................................................. 28 分代收集算法 ..........................................................

    JAVA核心知识点整理(有效)

    标记整理算法(Mark-Compact).................................................................................................. 28 分代收集算法 ..............................................................

    ksh:让我们记录一下我们每天学习的内容

    整理每天学习的内容。 :light_bulb: 内容 :triangular_flag: 网页 2. 3. 4. 5. 6. 7.Spring 8. Django :triangular_flag: 安卓 1,大数据 2. Android :triangular_flag: 网络 1.网络 :triangular_flag:...

    深入浅出MFC【侯捷】

    勿在浮砂筑高台 第1章 Win32程序基本概念 Win32程序开发流程 需要什么函数库(.LIB) 需要什么头文件(.H) 以消息为基础,以事件驱动之(message based,event driven) 一个具体而微的Win32程序 程序进入点WinMain...

    深入浅出MFC 2e

    第1章 Win32程序基本概念 Win32程序开发流程 需要什么函数库(.LIB) 需要什么头文件(.H) 以消息为基础,以事件驱动之(message based,event driven) 一个具体而微的Win32程序 程序进入点WinMain 窗口类之注册与...

    侯捷- -深入浅出MFC

    第1章 Win32程序基本概念 Win32程序开发流程 需要什么函数库(.LIB) 需要什么头文件(.H) 以消息为基础,以事件驱动之(message based,event driven) 一个具体而微的Win32程序 程序进入点WinMain 窗口类之注册与...

    windbg资料集合

    现在总算是入了点门,也收集了一些很好的资料,整理成一个CHM方便大家学习,时间仓促,整理得比较粗糙,大家凑合着看。这些文章均来自网络,版权归原作者所有。 1. 默认表达式类型是MASM. 2. 你能使用.expr ...

    深入浅出mfc简体中文版

    分裂視窗的程式概念/ 651 分裂視窗之實作/ 653 本章回顧/ 657 第12 章 印表與預覽/ 659 概觀/ 659 列印動作的背景原理/ 663 MFC 預設的印表機制/ 669 Scribble 列印機制的補強/ 685 印表機的頁和文件的頁/ 685 配置 ...

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    5.6.1 per_thread_buffers优化 198 5.6.2 global_buffers优化 200 5.6.3 query cache在不同环境下的使用 201 5.6.4 tuning-primer.sh性能调试工具的使用 205 5.6.5 72 gb内存的my.cnf配置文件 208 5.6.6 谨慎...

    JAVA面试题最全集

    调用Thread类的destroy()方法有什么后果? 58.多线程,用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用? 59.使用socket建立客户端与服务器的通信的过程 60.JAVA语言国际化应用,Locale类,...

Global site tag (gtag.js) - Google Analytics