随笔分类 -  Multithreading

使用CompletableFuture+ExecutorService+Logback的多线程测试
摘要:1. 环境 Java: jdk1.8.0_144 2. 背景 Java多线程执行任务时,Logback输出的主线程和各个子线程的业务日志需要区分时,可以根据线程池和执行的线程来区分,但若要把它们联系起来只能根据时间线,既麻烦又无法保证准确性。 org.slf4j.MDC类提供了一个极好的解决方案,它 阅读全文
posted @ 2018-10-27 23:16 hiv 阅读(2615) 评论(0) 推荐(0)
Java多线程系列十——BlockingQueue
摘要:参考资料:http://ifeve.com/java-synchronousqueue/http://www.cnblogs.com/jackyuj/archive/2010/11/24/1886553.htmlhttp://ifeve.com/java-blocking-queue/ Blocki 阅读全文
posted @ 2017-09-17 17:41 hiv 阅读(397) 评论(0) 推荐(0)
Java多线程系列九——Atomic类
摘要:参考资料:https://fangjian0423.github.io/2016/03/16/java-AtomicInteger-analysis/http://www.cnblogs.com/549294286/p/3766717.html 最近面试遇到一道编程题,要求两个线程交替打印[0,10 阅读全文
posted @ 2017-09-17 00:39 hiv 阅读(331) 评论(0) 推荐(0)
Java多线程系列八——volatile和ThreadLocal
摘要:参考资料: http://ifeve.com/java-memory-model-4/ http://www.infoq.com/cn/articles/java-memory-model-1 http://wuchong.me/blog/2014/08/28/how-to-correctly-wr 阅读全文
posted @ 2017-07-08 00:04 hiv 阅读(2900) 评论(0) 推荐(1)
Java多线程系列七——ExecutorService
摘要:java.util.concurrent.ExecutorService接口提供了许多线程管理的方法 有了以上方法,便可以基于此接口实现线程池的各种功能(例如java.util.concurrent.ThreadPoolExecutor/java.util.concurrent.ScheduledT 阅读全文
posted @ 2017-07-08 00:02 hiv 阅读(473) 评论(0) 推荐(0)
Java多线程系列六——Map实现类
摘要:参考资料: https://crunchify.com/hashmap-vs-concurrenthashmap-vs-synchronizedmap-how-a-hashmap-can-be-synchronized-in-java/ https://stackoverflow.com/quest 阅读全文
posted @ 2017-07-08 00:00 hiv 阅读(1306) 评论(0) 推荐(0)
Java多线程系列五——列表类
摘要:参考资料: http://xxgblog.com/2016/04/02/traverse-list-thread-safe/ 一些列表类及其特性 1. 线程安全的列表类并不意味着调用它的代码就一定线程安全 2. 只有CopyOnWriteArrayList能支持在遍历时修改列表元素 以下代码模拟多线 阅读全文
posted @ 2017-07-07 23:59 hiv 阅读(1487) 评论(0) 推荐(0)
Java多线程系列四——控制线程执行顺序
摘要:假设有线程1/线程2/线程3,线程3必须在线程1/线程2执行完成之后开始执行,有两种方式可实现 Thread类的join方法:使宿主线程阻塞指定时间或者直到寄生线程执行完毕 CountDownLatch类:指定计数器,当计数器清零即取消阻塞 阅读全文
posted @ 2017-07-07 23:57 hiv 阅读(13786) 评论(0) 推荐(0)
Java多线程系列三——实现线程同步的方法
摘要:两种实现线程同步的方法 下文用三种不同的方式实现生产者/消费者模型 synchronized结合wait/notify/notifyAll ReentrantLock结合Condition BlockingQueue(内部仍然采用ReentrantLock实现) 阅读全文
posted @ 2017-07-07 23:56 hiv 阅读(583) 评论(0) 推荐(0)
Java多线程系列二——Thread类的方法
摘要:Thread实现Runnable接口并实现了大量实用的方法 public static native void yield(); 此方法释放CPU,但并不释放已获得的锁,其它就绪的线程将可能得到执行机会,它自己也有可能再次得到执行机会 public static native void sleep( 阅读全文
posted @ 2017-07-07 23:55 hiv 阅读(1187) 评论(0) 推荐(0)
Java多线程系列一——Java实现线程方法
摘要:Java实现线程的两种方法 继承Thread类 实现Runnable接口 它们之间的区别如下: 1)Java的类为单继承,但可以实现多个接口,因此Runnable可能在某些场景比Thread更适用2)Thread实现了Runnable接口,并且有更多实用方法3)实现Runnable接口的线程启动时仍 阅读全文
posted @ 2017-07-07 23:54 hiv 阅读(336) 评论(0) 推荐(0)
Java多线程系列
摘要:参考资料: http://www.jianshu.com/p/40d4c7aebd66 0.环境 Java: jdk1.8.0_91 CPU: Intel Core i5-6500 Memory: 8G 1.说明 本系列文章为Java多线程的学习记录(代码https://github.com/hiv 阅读全文
posted @ 2017-07-07 23:49 hiv 阅读(209) 评论(0) 推荐(0)