40程序员,补学java多线程
一个平凡的IT农民工
一个平凡的40+农民工
展开
-
读《图解java多线程设计模式》总结--Single Threaded Execution
1,Single Threaded Execution从名字上来看,就是一次只允许一条线程执行,其他还没有获得执行权力的只能等待。 2,适用范围:保护共享资源(SharedResource),防止多线程同时修改共享资源时造成混乱 3,实现方式:采用Synchronized来修饰操作共享资源的方法,相当于每次只允许一条线程执行该方法 4,图解,当线程1调用Synchronized方法修改共享...原创 2019-04-11 22:56:05 · 270 阅读 · 0 评论 -
读《图解java多线程设计模式》总结--Producer-Consumer
1,从名字上看,就是多线程教程中最普遍的消费与生产问题。 2.适用范围,由于消费和生产分别由不同的线程来进行,这里就有一个速度同步的问题,有可能消费线程运行比较快,产品还没有被生产出来,也有可能消费线程运行比较慢,产品造成了积压,Producer-Consumer就是要解决消费线程与生产线程的同步问题。 3,实现方式,这里有3个概念,Producer生产者,负责生产产品,这里的产品可以是普通的...原创 2019-04-15 23:03:47 · 165 阅读 · 0 评论 -
读《图解java多线程设计模式》总结--Immutable
1,Immutable表示不可变,从名字上看就是无论有多少线程操作同一个共享资源,都不能改变该资源的状态。 2,适用范围,对于初始化一次就不允许修改的资源可以采用该模式,由于共享资源不可变,所以即使在多线程的情况下也不需要使用Synchronized来保护共享资源,由于不存在线程阻塞和等待,从而达到提高访问性能的效果。 3,实现方法,在构造函数初始化共享资源,共享资源用final和privat...原创 2019-04-12 23:57:35 · 121 阅读 · 0 评论 -
读《图解java多线程设计模式》总结--Guarded Suspension
1,从名字上看就是增加了守护功能的一种设计模式,目的是确保在多线程条件下各线程能正常操作共享资源,如果触发了守护功能,相关的线程就必须等待,直到守护功能确保不会出现操作异常才会让线程继续执行下去。 2,与Single Threaded Execution相似都是为了保护共享资源,只不过Single Threaded Execution是无条件的多线程互斥,而Guarded Suspension...原创 2019-04-13 23:22:48 · 134 阅读 · 0 评论 -
读《图解java多线程设计模式》总结--Read-write Lock
1,从名字上看就是一种比较特殊的锁,该锁能针对读和写操作分别对读线程和写线程进行不同的处理,确保不会出现冲突情况 2,适用范围,对于共享资源,如果两个线程同时进行读操作是不会发生任何冲突的,因为读操作不会修改共享资源的值。但如果一个线程在读,另外一个线程在写,或者两个线程同时进行写操作,那么就会发生冲突,Read-write Lock模式就是用于这种场景下,一方面同时读不加锁提高性能,另一方面防...原创 2019-04-16 23:36:51 · 105 阅读 · 0 评论 -
读《图解java多线程设计模式》总结--Worker Thread
1,从名字上看,工人线程可以联想到有一家工厂,里面有固定数量的工人,每个工人收到任务后都会独立开展工作,相互之间互不影响。每个工人就可以当作是一个独立的线程,由于工人的数量有固定的,所以线程的数量也是固定。 2,适用范围,该模式可以看作是一种线程池模式,一个工厂里面有多少个工人,这个是一个固定的数量,相当于在程序启动的时候先建立好固定数量的线程,然后这些线程不断的处理来自四面八方发送到该工厂的请...原创 2019-04-21 22:17:46 · 317 阅读 · 0 评论 -
读《图解java多线程设计模式》总结--Balking
1,从名字上看,balk是拒绝的意思,目的是确保在多线程条件下各线程能正常操作共享资源,该模式有点类似Guarded Suspension模式,唯一不同的是,Guarded Suspension当不满足守护条件的情况下会触发线程等待,而Balking当不满足守护条件时直接返回,不会触发线程等待。 2,适用范围,Balking模式的特点就是不进行等待,当守护条件不成立的时候,要立即进行其他操作,就...原创 2019-04-14 22:17:09 · 148 阅读 · 0 评论 -
读《图解java多线程设计模式》总结--Future
1,从名字上看,Future就是将来的意思,可以这样理解当调用一个方法时,与其一直等待,不如先拿一个代表将来才能兑现的对象,然后等过来一段时间再通过这个对象获取真实结果。在生活中一个经常发生的例子就是提货单,我们去店铺下需求,可能不是马上能够收到我们需要的东西,这时会给你一张提货单(一个代表将来才能兑现的对象),过一段时间再拿这张提货单来提货 2,适用范围,与Thread-Per-Message...原创 2019-04-22 22:44:21 · 163 阅读 · 0 评论 -
读《图解java多线程设计模式》总结--Thread-Per-Message
1,从名字上看,就是每一条信息一条线程,这里的信息可以看作是一次请求,相当于对于每一次请求都会独立开启一条线程来处理 2,适用范围,对于某些请求由于处理时间较长,但又不需要等待返回结果,也没有要求处理一定要按某种顺序进行,此时就适合用Thread-Per-Message 3,实现方式,这里有3个概念,第一个是Client表示发起请求端,第二个是Host,可以把他看作是接受请求,接受后为每一个请...原创 2019-04-18 22:50:01 · 136 阅读 · 0 评论