![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程相关
嗵呲咔嚓嗵
欢迎评论,如有异议或不理解的,一起研究讨论
展开
-
多线程调优-生产者消费者
简介生产者消费者模式中,有两类线程:若干个生产者线程和若干个消费这线程。生产者主要负责提交用户的请求。消费这用于处理生产者提交的任务。生产者消费者通过共享的内存缓冲区进行数据通信。生产者消费之间并不是直接通信,从而可以减少他们之间的耦合。生产者不需要消费者直接存在,消费这也不需要知道生产者的存在。内存缓冲区主要的功能是实现数据在多线程间的共享。此外,通过缓冲区可以缓解生产者和消费者之间的性能差...原创 2019-03-26 13:36:20 · 184 阅读 · 0 评论 -
多线程调优-Master-Worker模式
简介Master-Worker是常见的并行设计模式。核心思想是: 系统中有两个进程协议工作。Master进程负责接收和分配任务,Worker负责处理子任务。当worker进程将子任务处理完毕之后,将结果返回给Master进程,由Master进行归纳和汇总。优势:可以将大任务分解成若干小任务,并发执行,从而提高系统性能。对于客户端(请求发起者)来说,任务一旦提交,Master进程就会立刻分配任...原创 2019-03-26 13:37:18 · 237 阅读 · 0 评论 -
CountDownLatch,CyclicBarrier,Semphore区别和用途
1)CountDownLatch和CyclicBarrier都能够实现线程之间的等待,只不过它们侧重点不同:CountDownLatch一般用于某个线程A等待若干个其他线程执行完任务之后,它才执行;而CyclicBarrier一般用于一组线程互相等待至某个状态,然后这一组线程再同时执行;另外,CountDownLatch是不能够重用的,而CyclicBarrier是可以重用的。2)Sema...原创 2019-03-26 13:38:31 · 327 阅读 · 0 评论 -
多线程常用API
1.wait()wait()通过对象的monitor对象来实现,wait方法的使用必须在同步范围内,否则就会排除IllegalMonitorStateException异常。wait的作用是阻塞当前线程等待notify、notifyAll方法的唤醒,或等待超时后自动唤醒。2.notify/notifyAll因为wait是通过对象的monitor去实现的,所以只要在同一对象上调用notify...原创 2019-03-26 13:35:06 · 456 阅读 · 0 评论 -
线程相关基础概念
并发与并行需要通过不断切换需要运行的线程让其运行的方式叫做并发。在多cpu系统中,可以让两个以上的线程同时运行,这种方式叫做并行线程与进程每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销。一个进程包含1-n个线程同意类线程共享代码和数据空间。每个线程有独立的运行栈和程序计数器,线程的切换开销小。多进程是指操作系统可同时运行多个任务(程序)多线程是指同一程序中...原创 2019-03-26 13:34:16 · 90 阅读 · 0 评论 -
线程间的互斥通信
Synchornized1.用来控制对类成员变量的访问: 每个类实力都对应一把锁,每个Synchornized方法都必须获得调用该方法的类实例的所才可以进行执行,否则所属线程阻塞,方法一旦执行,则独占该锁,直到该方法执行完毕,其他线程才能获取该锁。这种机制保证了同一时刻对于每一个类的实例。其所有生命为Synchornized的成员方法之多只有一个处于执行状态,因为只有一个可以获取...原创 2019-03-26 13:33:37 · 181 阅读 · 0 评论 -
ThreadLocal相关
作用和原理ThreadLocal就是为每一个使用该变量的线程都提供了一个变量值的副本。是Java中一种较为特殊的线程绑定知己,是每一个线程都可以独立的改变自己的副本,而不会跟其他线程的副本发生冲突。从线程的角度来看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且ThreadLocal实例是可以访问的;在线程结束后,其线程的局部实例的所有副本都会被垃圾回收,除非存在对这些...原创 2019-03-26 13:32:57 · 106 阅读 · 0 评论