摘要: 什么是Disruptor Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内 阅读全文
posted @ 2019-03-13 16:41 wangzhanhua123 阅读(329) 评论(0) 推荐(0) 编辑
摘要: Java内存模型 共享内存模型指的就是Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入时,能对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memor 阅读全文
posted @ 2019-03-11 17:46 wangzhanhua123 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 重入锁 锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized(重量级) 和 ReentrantLock(轻量级)等等 ) 。这些已经写好提供的锁为我们开发提供了便利。 重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码 阅读全文
posted @ 2019-03-11 17:41 wangzhanhua123 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 1、脚本文件monitor.sh 2、上传到linux服务器,如果执行不了,注意使用dos2unix 命令将dos文件转换为unix文件 3、新建monitor文件夹 /opt/logs/monitor 放日志 /opt/script/monitor 放脚本文件 4、增加1分钟计划执行 阅读全文
posted @ 2019-03-02 14:56 wangzhanhua123 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 提交一个任务到线程池中,线程池的处理流程如下: 1、判断线程池里的核心线程是否都在执行任务,如果不是(核心线程空闲或者还有核心线程没有被创建)则创建一个新的工作线程来执行任务。如果核心线程都在执行任务,则进入下个流程。 2、线程池判断工作队列是否已满,如果工作队列没有满,则将新提交的任务存储在这个工 阅读全文
posted @ 2019-02-27 17:16 wangzhanhua123 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 并发包 (计数器)CountDownLatch CountDownLatch 类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDown 阅读全文
posted @ 2019-02-27 15:39 wangzhanhua123 阅读(125) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2019-02-27 09:54 wangzhanhua123 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 强引用:普通的引用,强引用指向的对象不会被回收; 软引用:仅有软引用指向的对象,只有发生gc且内存不足,才会被回收; 弱引用:仅有弱引用指向的对象,只要发生gc就会被回收。 看一个例子就明白强引用、软引用、弱引用的区别: output: 阅读全文
posted @ 2019-02-26 14:01 wangzhanhua123 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 为什么有线程安全问题? 当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。 线程安全解决办法: 问:如何解决多线程之间线程安全问题 答:使用多线程之间同步synchronized或使用锁(lock)。 问:为什 阅读全文
posted @ 2019-02-26 13:58 wangzhanhua123 阅读(108) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2019-02-22 14:34 wangzhanhua123 阅读(4) 评论(0) 推荐(0) 编辑