disruptor框架
摘要:简介: Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱
阅读全文
线程池
摘要:JDK自带的线程池 延迟5秒后执行,然后每隔一秒轮回执行。 自定义的线程池
阅读全文
并发模型(二)——Master-Worker模式
摘要:Master-Worker模式是常用的并行模式之一,它的核心思想是,系统有两个进程协作工作:Master进程,负责接收和分配任务;Worker进程,负责处理子任务。当Worker进程将子任务处理完成后,结果返回给Master进程,由Master进程做归纳汇总,最后得到最终的结果。 一、什么是Mast
阅读全文
并发模型(一)——Future模式
摘要:多线程开发可以更好的发挥多核cpu性能,常用的多线程设计模式有:Future、Master-Worker、Guard Susperionsion、不变、生产者-消费者 模式; jdk除了定义了若干并发的数据结构,也内置了多线程框架和各种线程池; 锁(分为内部锁、重入锁、读写锁)、ThreadLoca
阅读全文
同步容器和并发容器
摘要:同步类容器 并发类容器 ConcurrentMap Copy-on-write 并发List Vector和CopyOnWriteArrayList是两个线程安全的List,Vector读写操作都用了同步,相对来说更适用于写多读少的场合,CopyOnWriteArrayList在写的时候会复制一个副
阅读全文
使用ReentrantReadWriteLock类
摘要:读读共享 类ReentrantReadWriteLock的使用:写写互斥 读写互斥
阅读全文
一.lock的使用
摘要:使用ReentrantLock类 ReentrantLock类在扩展功能上更加强大,比如嗅探锁定,多路分支通知。而且在使用上也比synchronized更加灵活 调用ReentrantLock对象的lock()方法获取锁,调用unlock()方法释放 锁。 使用Condition实现等待/通知机制:
阅读全文
三.线程间的通信
摘要:ThreadLocal的使用 变量的值的共享可以使用public static 变量的形式,所有的线程都使用同一个static变量。 如果想实现每一个线程都有自己的共享变量该如何解决呢?JDk中提供的类是ThreadLocal正是解决这样的问题 类Threadlocal主要解决的就是每个线程绑定自己
阅读全文
二.线程间的通信
摘要:方法join的使用 方法join与异常 在join过程中,如果当前线程对象被中断,则当前线程出现异常。 方法join(long)的使用
阅读全文
一.线程间通信
摘要:简介: 等待通知机制的实现 当interrupt()方法遇到wait()方法 只通知一个线程 唤醒所有线程 方法wait(long)的使用 通知过早 通知过早,wait线程还没有进入wait状态,其它线程已经进行了notify,不会产生影响。 生产者与消费者模式 假死 一个生产者多个消费者——操作栈
阅读全文
一.volatile关键字
摘要:一.volatile关键字的原理 使用volatile关键字增加了实例变量在多个线程之间的可见性。但volatile的最致命的缺点是不支持原子性。 synchronized代码块具有volatile同步的功能
阅读全文
二.对象及变量的并发访问(二)
摘要:1.string的常量池特性 在JVM中具有String常量池缓存的功能,如图 将synchronized(string)同步块和String联合使用时,要注意常量池带来的一些例外。 出现这样的情况及时因为String的两个值都是AA,两个线程持有相同的锁,所以造成线程B不能执行。 这就是Strin
阅读全文
一.对象及变量的并发访问
摘要:章主要介绍Java多线程中的同步,也就是如何在java语言中写出线程安全的程序。 synchronized同步方法 非线程安全其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏读”。 方法内的变量为线程安全 “非线程安全”问题存在于“实例变量”中,如果是方法内部的私有变量
阅读全文
三.线程优先级和守护进程
摘要:1.线程的优先级 在操作系统中,线程可以划分优先级,优先级高的线程得到的CPU资源较多,也是CPU优先执行优先级较高的线程对象中的任务。 设置线程优先级有助于帮“线程规划器”确定在下一次选择哪一个线程来优先执行。 设置优先级使用setPriority()方法。 线程优先级的继承性 java中线程的优
阅读全文
二.多线程技能
摘要:1.停止线程 停止线程是多线程开发很重要的技术点,掌握此技术可以对线程的停止惊醒有效的处理。 停止一个线程可以使用Thread.stop()方法,但最好不要使用它,这个方法是不安全的。 大多数停止一个线程使用的是Thread.interrupt()方法,尽管方法的名称是“停止,中止”,但这个方法不会
阅读全文
一.多线程技能
摘要:1.多线程的概念 进程的概念 进程是操作系统结构的基础;是一次程序的执行,它是系统进行资源分配和调度的一个独立单位。 线程 线程可以理解为在进程中独立运行的子任务。比如QQ进程在运行中,有很多子任务同时运行,如,好友视频线程,下载文章线程,数据传输线程等。 单任务的特点就是排队执行,也就是同步。多线
阅读全文