1 I/O处理比较花费时间,故把执行I/O处理和非IO处理的线程分开。CPU执行速度很快、而内存的写入、读取很慢,所以有关CPU和内存交互会降低指令的速度。
2 start方法运行有2个步骤
启动新的线程
运行new对象的run方法
3 所有线程结束,程序结束。  主线程可以先结束,但并不表示程序结束。
4 一个线程已经获得锁定,其他线程都不能执行该实例的synchronized方法。
5 wait set 线程休息区,当线程调用wait()方法时,线程自动进入wait set 区等待,直到被唤醒。
6 wait notify notifyAll方法都是在锁定时调用,唤醒的线程重新等待锁。并且都有对象obj.wait(),否则默认this.wait()
7 线程好坏评判标准
   安全性和生存性为必考虑
安全性    ---不损坏对象
生存性    ---进行必要处理 , 防止线程挂掉
复用性    ---可在利用类
性能      ---能快速、大量的进行处理
吞吐量越大、响应性越快、容量越大,性能越好
8 可能发生死锁的3个条件
a、具有多个sharedResourse参与者,即共享资源
b、线程锁定一个sharedSourse时,还没解除前就去锁定另一个sharedSourse.
c、获取sharedSourse的顺序不固定
只要破坏a b c中的任意一个条件,就可以避免死锁的发生。
9 临界区的大小与执行性能
获取锁定需要花时间
线程冲突时必须等待
10 有锁定时一定要记得解锁,中间不能有return 或是异常。
11 要在线程中共享long 和 double 的字段,必须在synchronized中操作,或是声明成volatile
12 Immutable Thread(不可变线程)
字段为 final私有
没有setter方法
  优点:不需要synchronized字段,频繁访问的情况下可以大大提高性能。
13 被阻挡而等待
等待
while(!ready){
wait();
}

唤醒
ready=true;
notify()/notifyAll()
14 ReadWriteLock
Read  Read    不冲突
Read  Write   冲突
Write  Write   冲突
15 进程与线程的区别
a 进程的内存是独立的、线程的内存是共享的

16 interrupt() 方法会唤醒sleep/wait/join ,但会直接到catch语句,而不是运行其后面的语句。
17 join()等待线程结束

疑问:
1 同一个类中,2个方法用了synchronized, 调用其中的一个方法,另一个方法也被锁住了?
答:是

1、多核、多CPU线程
Lock
lock.lockInterruptibly(),其实和lock.lock()效果一样,只有当调用interrupt()方法时,前面的会先运行catch里代码。
Condition 
Timer
TimerTask
Callable<V>
2 WeakReference弱引用,防止内存泄露,将弱引用对象占用空间释放。
3  Futrue<V>  FutrueTask<V>
4 JAVA netive关键字
native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。
Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。
5 public ThreadPoolExecutor(int corePoolSize,  
                              int maximumPoolSize,  
                              long keepAliveTime,  
                              TimeUnit unit,  
                              BlockingQueue<Runnable> workQueue,  
                              ThreadFactory threadFactory,  
                              RejectedExecutionHandler handler)
a.当线程池小于corePoolSize时,新提交任务将创建一个新线程执行任务,即使此时线程池中存在空闲线程。 
b.当线程池达到corePoolSize时,新提交任务将被放入workQueue中,等待线程池中任务调度执行 
c.当workQueue已满,且maximumPoolSize>corePoolSize时,新提交任务会创建新线程执行任务 
d.当提交任务数超过maximumPoolSize时,新提交任务由RejectedExecutionHandler处理 
e.当线程池中超过corePoolSize线程,空闲时间达到keepAliveTime时,关闭空闲线程 
f.当设置allowCoreThreadTimeOut(true)时,线程池中corePoolSize线程空闲时间达到keepAliveTime也将关闭

java多线程设计模式相关推荐

  1. 图解Java多线程设计模式

    图解Java多线程设计模式 1-4章 第一部分 第五章 生产者与消费者 第六章 读写锁 7.8.9章 第三部分 第十章 Two-phase Termination 想要结束运行中的线程 ,这张有问题, ...

  2. java多线程设计模式详解

    Java多线程设计模式 线程的创建和启动 Java语言已经内置了多线程支持,所有实现Runnable接口的类都可被启动一个新线程,新线程会执行该实例的run()方法,当run()方法执行完毕后,线程就 ...

  3. 图解Java多线程设计模式——Java多线程基础

    文章目录 简介 线程的启动 线程启动(1)--利用Thread类的子类 线程启动(2)--利用Runnable接口 利用ThreadFactory新启动线程 线程的暂停 线程的互斥处理 synchro ...

  4. java多线程设计模式详解[推荐]

    java多线程设计模式详解[推荐] java多线程设计模式详解之一 线程的创建和启动 java语言已经内置了多线程支持,所有实现Runnable接口的类都可被启动一个新线程,新线程会执行该实例的run ...

  5. 图解多线程设计模式pdf_图解Java多线程设计模式阅读计划-图灵社区.PDF

    图解Java多线程设计模式阅读计划-图灵社区 Java --1 Java Java 13 D API java.util.concurrent Java Java 3 321 20:00-22:00 ...

  6. Java多线程设计模式之顺序控制-两个小案例

    Java多线程设计模式之顺序控制-两个小案例 案例一 两个线程,保证B线程执行完毕后再让A线程执行 思路一:使用wait/notify,需要synchronized关键字支持 思路二:使用LockSu ...

  7. Java多线程设计模式(4)线程池模式

    前序: Thread-Per-Message Pattern,是一种对于每个命令或请求,都分配一个线程,由这个线程执行工作.它将"委托消息的一端"和"执行消息的一端&qu ...

  8. JAVA多线程设计模式篇 1、什么是多线程设计模式

    文章目录 1. 从物种进化说起 2. 十二种武器 总结 1. 从物种进化说起 寒武纪时期之前,所有的生物都没有进化出眼睛,突然有一天,许多生物们都开始有了视觉.能看见多姿多彩的世界,周围的环境.敌人和 ...

  9. java — 多线程设计模式

    前言: 本文章为作者原创,转载请注明出处,如该文章有技术问题,请指教,不胜感激.. 0528 一:多线程设计模式: 1.几种线程设计模式: 单例模式 不变模式 Future模式 生产者消费者模式 2. ...

  10. Java多线程--设计模式(二、Immutable Object(不可变对象)模式)

    一.Immutable Object 模式简介 多线程共享变量的情况下,为了保证数据的一致性,往往需要对这些变量的访问进行加锁.而锁本身又会带来一些问题和开销.Immutable Object 模式使 ...

最新文章

  1. 微信小程序客服功能 把当前页面的信息卡片发送给客服
  2. 数据列过滤条件常用处理
  3. MySql的upsert操作
  4. jquery filter和not
  5. 使用route命令解决一机双网访问
  6. 怎样在页面上查找请求内容_怎样快速裁剪删除PDF文档的页面内容?
  7. MySQL关于Table cache设置,看这一篇就够了
  8. java水彩画效果滤镜,教你巧用PS滤镜实现水彩画效果
  9. eas bos编码重复
  10. Wondershare Flash Gallery Factory
  11. 使用ApachePOI复制pptx文件模板的幻灯片
  12. TCP: too many of orphaned sockets报错解决
  13. GBase 8c 的安全特性
  14. JumpServer开源堡垒机与宝兰德中间件完成产品兼容性认证
  15. 完了!服务器沦为肉鸡了!排查过程!
  16. CSS中 px、em、rem区别
  17. java编写分数加减法_JAVA 分数加减法
  18. 美国亿万富翁悬赏百万解数学难题
  19. 努力成为一名数据分析师
  20. LPK木马分析-02

热门文章

  1. 高中小高考计算机试题,浙江省2020年新高考选考科目原创猜题卷5信息技术试题(PDF版,有答案)...
  2. JAVA GUI界面美化 使用Quaqua仿MAC(苹果)主题LookAndFeel经验分享
  3. 如何下载北大图书馆多媒体资源服务平台讲座
  4. HART/MODBUS 网关作为HART第二主站在污水处理厂的应用
  5. 京东商城涉足保险业务
  6. 3970x做网站服务器,锐龙ThreadRipper 3970X为原生32核 开核变64核别想了
  7. 【HDU No. 1166】 敌兵布阵
  8. vue + elementui + axios表单数据和文件上传
  9. 计算机科学中了增刊 如何撤稿,作者胡乱撤稿,结果……被拉黑
  10. OpenCV_Python图像融合时两张图片大小不一致的解决方法