摘要: 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开 阅读全文
posted @ 2018-01-11 17:14 甜菜波波 阅读(158) 评论(0) 推荐(0) 编辑
摘要: Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对 阅读全文
posted @ 2018-01-11 15:34 甜菜波波 阅读(156) 评论(0) 推荐(0) 编辑
摘要: Java并发编程:CountDownLatch、CyclicBarrier和Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本 阅读全文
posted @ 2018-01-11 15:04 甜菜波波 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 直接使用thread可以使用thread和wait notify 实现顺序执行 线程池中可以使用CountDownLatch 进行顺序执行 转自 https://www.cnblogs.com/flyme/p/4568063.html 阅读全文
posted @ 2018-01-11 14:42 甜菜波波 阅读(184) 评论(0) 推荐(0) 编辑
摘要: package com.test; public class OutputThread { public static Object lockObj=new Object(); public static void main(String [] args){ ThreadA t1 = new ThreadA("t1"); synchron... 阅读全文
posted @ 2018-01-11 14:23 甜菜波波 阅读(552) 评论(0) 推荐(0) 编辑
摘要: package com.test; public class OutputThread implements Runnable { private int num; private Object lock; public OutputThread(int num, Object lock) { super(); this.num = ... 阅读全文
posted @ 2018-01-11 10:15 甜菜波波 阅读(4800) 评论(0) 推荐(0) 编辑