去年看完的<图解java多线程设计模式>,可惜当时没做笔记,导致后来忘了许多东西,打算再温习下这本书,顺便在这里记录一下~  1.顺序执行.并行.并发 顺序执行:多个操作按照顺序依次执行. 并行:多个任务同时进行,同一时间内可以执行多个任务,这种方式,叫做并行执行,比如多核处理器,多个核可以同时处理多个任务. 并发:多个任务通过切分时间段,来达到“同时进行”的效果,比如单核处理器,在“同时”处理多个任务时,就会不停的切换来执行不同的任务,不可能有同一时间执行不同任务的情况. 下面引用别人的一句…
join & interrupt 这俩方法属于线程对象里的方法,属于线程本身的操作. join方法 用于等待一个线程的终止,等待期间将会阻塞,直到被等待的线程终止结束. 所以join可以用来做多任务异步处理,比如还是拿利用CompletableFuture优化程序的执行效率这篇里的第一个例子做优化,这篇文章里使用线程池的future模式进行多任务异步处理,现在使用join改写下: 再来简单贴下这几个方法 private String getTop() { // 这里假设getTop需要执行200…
略读中...后面详读的时候,补充经典图片和文字说明…
synchronized实例方法体和synchronized代码块 synchronied void method(){ ....... } 这个等同于下面将方法体用synchronized(this)代码块包围起来 void method(){ synchronized(this) { ....... } } 这也就是说,synchronized实例方法是使用this(实例对象)的锁来执行线程的互斥处理的 如果想用synchronized锁方法那么,需保证只有一个实例对象,如果你将 用这个锁T…
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt220 java多线程设计模式 java语言已经内置了多线程支持,所有实现Runnable接口的类都可被启动一个新线程,新线程会执行该实例的run()方法,当run()方法执行完毕后,线程就结束了.一旦一个线程执行完毕,这个实例就不能再重新启动,只能重新生成一个新实例,再启动一个新线程.Thread类是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程…
目录(?)[-] Java多线程基础 Thread类的run方法和start方法 线程的启动 线程的暂时停在 线程的共享互斥 线程的协调 Single Threaded Execution Pattern   Java多线程基础 Thread类的run方法和start方法        Java语言写成的程序一定是先从主线程开始操作,所以必须在程序的某个位置启动新的线程,才能算是真正的多线程程序.start()方法是 Thread类的方法,调用start()方法,就会启动新的线程.请注意,被调用…
前序: Thread-Per-Message Pattern,是一种对于每个命令或请求,都分配一个线程,由这个线程执行工作.它将“委托消息的一端”和“执行消息的一端”用两个不同的线程来实现.该线程模式主要包括三个部分: 1,Request参与者(委托人),也就是消息发送端或者命令请求端 2,Host参与者,接受消息的请求,负责为每个消息分配一个工作线程. 3,Worker参与者,具体执行Request参与者的任务的线程,由Host参与者来启动. 由于常规调用一个方法后,必须等待该方法完全执行完毕…
目录(?)[-] Future Pattern Two-Phase Termination Pattern Thread-Specific Storage Pattern Active Object Pattern   Future Pattern       在Thread-Per-Message Pattern中,我们研究过“收到每个请求建立一个线程”的做法,但这样的请求是不要求有返回值的.如果当需要返回值,但由于后台处理需要很久,返回值 不能马上获取,那么就可以使用 Future Patt…
目录(?)[-] Read-Wirte Lock Pattern Thread-Per-Message Pattern Worker Thread Pattern   Read-Wirte Lock Pattern         Read-Write Lock Pattern 将读取和写入分开来处理.在读取数据之前,必须获取用来读取的锁定.而要写入的时候,则必须获取用来写入的锁定.因为进行读取时,实例的状态不会改变,所 以,就算有多个线程在同时读取也没有关系.但当有线程在进行写入的时候,不可以…
    目录(?)[-] Guarded Suspension Pattern Balking Pattern Producer-Consumer Pattern   Guarded Suspension Pattern      该模式描述的是当一个线程在执行某个操作时,但由于其他资源还没有准备好,需要等待,那么就等待资源准备好才开始自己的操作.我们直接看代码例子: public class Request { private Stringname; public Request(String…