随笔分类 -  多线程

摘要:方式一 方式二 阅读全文
posted @ 2019-10-20 22:19 踏月而来 阅读(545) 评论(0) 推荐(0)
摘要:/** *将线程要运行的逻辑代码及数据同步相关的锁,放在同一个类中,这里是Business类,数据同步由Business类维护 *而与线程控制相关的代码分开,指的是线程类本身 * */ public class CommunicationTest { public static void main(String[] args) { Business business = new Business( 阅读全文
posted @ 2019-10-20 15:35 踏月而来 阅读(130) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2019-10-20 14:08 踏月而来 阅读(134) 评论(0) 推荐(0)
摘要:退出线程主要的思路是用一个标志位或者是使用线程的中断方法 下面的例子是可以确保调用shutdown()方法,无论线程是否在休眠中,线程都会退出 阅读全文
posted @ 2019-10-20 12:29 踏月而来 阅读(1029) 评论(1) 推荐(0)
摘要:一、线程状态 NEW 新new出来,还没有执行start方法 RUNNABLE 可运行状态,或者在执行,或者在等待CPU分配时间 BLOCKED 当线程调用wait方法后,线程就进入了阻塞状态,等待其他的线程调用notify方法,将当前线程唤醒,然后去争抢锁,进入可运行状态 WAITING 等待状态 阅读全文
posted @ 2019-10-16 22:35 踏月而来 阅读(148) 评论(0) 推荐(0)
摘要:(1) ThreadPoolExetor#submit(Callable<T> task) 有返回值 (2) ThreadPoolExetor#submit(Runnable task, T result) 有返回值,返回值是通过result间接获取的 (3)ThreadPoolExetor#sub 阅读全文
posted @ 2019-08-14 10:08 踏月而来 阅读(839) 评论(0) 推荐(0)
摘要:工人线程Worker thread会逐个取回工作并进行处理,当所有工作全部完成后,工人线程会等待新的工作到来 5个工人线程从传送带取数据,3个传送工人线程将数据放入传送带 阅读全文
posted @ 2019-06-10 17:43 踏月而来 阅读(607) 评论(0) 推荐(0)
摘要:实现的思路是,通过代理将方法的调用转变为向阻塞队列中添加一个请求,由一个线程取出请求后执行实际的方法,然后将结果设置到Future中 这里用到了代理模式,Future模式 阅读全文
posted @ 2019-05-24 17:55 踏月而来 阅读(617) 评论(0) 推荐(0)
摘要:Future设计模式把同步调用变成异步调用 阅读全文
posted @ 2019-05-24 11:33 踏月而来 阅读(255) 评论(0) 推荐(0)
摘要:生产者消费者模式描述的是协调与协作关系。比如一个人正在准备食物(生产者),而另一个人正在吃(消费者),他们使用一个共用 的桌子用于放置盘子和取走盘子,生产者准备食物,如果桌子上已经满了就等待,消费者(那个吃的)如果桌子空了的话就等待 采用生产者消费者模式可以做到异步,解耦的目的。 阅读全文
posted @ 2019-05-23 17:26 踏月而来 阅读(234) 评论(0) 推荐(0)
摘要:public class MyBlockQueue { private int count; private int head; private int tail; private String[] arr; public MyBlockQueue(int arrLen) { this.count = 0; thi... 阅读全文
posted @ 2019-05-23 12:37 踏月而来 阅读(508) 评论(0) 推荐(0)
摘要:自己实现的CountDownLatch ,只是模拟他的功能而已。jdk中的实现采用的是AQS 阅读全文
posted @ 2019-05-22 14:37 踏月而来 阅读(380) 评论(0) 推荐(0)
摘要:通俗的讲就是,CountDownLatch相当于一扇大门,在大门打开之前所有线程都被阻断,一旦大门打开所有线程都将通过,但是一旦大门打开,所有线程都通过了,那么这个CountDownLatch的状态就失效了,门的状态也就不能变了,只能是打开状态。也就是说CountDownLatch的状态是一次性的 阅读全文
posted @ 2019-05-22 14:26 踏月而来 阅读(464) 评论(0) 推荐(0)
摘要:MessageQueue 和blockQueue起到的作用是一样的 生产者 消费者 测试 阅读全文
posted @ 2019-05-21 14:11 踏月而来 阅读(277) 评论(0) 推荐(0)
摘要:3个学生一起参加考试,一共有三道题,要求所有学生到齐才能开始考试,全部同学都做完第一题,学生才能继续做第二题,全部学生做完了第二题,才能做第三题,所有学生都做完的第三题,考试才结束 阅读全文
posted @ 2019-05-20 18:07 踏月而来 阅读(213) 评论(0) 推荐(0)
摘要:Phaser表示“阶段器”,用来解决控制多个线程分阶段共同完成任务的情景问题 启动三个线程,分别对三个文件夹搜索,文件要以txt结尾,修改时间要在一天之内,并将文件路径打印在控制台 /** * 开启三个线程对三个文件夹进行搜索 * */ public class FileSearch impleme 阅读全文
posted @ 2019-05-20 17:00 踏月而来 阅读(299) 评论(0) 推荐(0)
摘要:队列的操作: offer 是向队列尾部添加元素,返回true或者false poll 是从队列头部取数据,如果没有取到返回null offer和poll都不会阻塞当前线程 阻塞操作 put 往队列当中中放入数据 take 从队列当中取数据 阅读全文
posted @ 2019-05-17 16:39 踏月而来 阅读(391) 评论(0) 推荐(0)
摘要:Future提供了三种功能: 1)判断任务是否完成; 2)能够中断任务; 3)能够获取任务执行结果 阅读全文
posted @ 2019-05-15 10:56 踏月而来 阅读(159) 评论(0) 推荐(0)
摘要:线程池相关类 ExecutorService , 线程池接口 Executors 线程池工具类,可以生成不同类型的线程池, Executors.newFixedThreadPool(3); //固定数量的线程池 corePoolSize=maximumPoolSize=3 Executors.new 阅读全文
posted @ 2019-04-29 17:55 踏月而来 阅读(214) 评论(0) 推荐(0)
摘要:A线程调用B线程,B线程发生异常,A怎么知道B线程发生异常了 阅读全文
posted @ 2019-04-17 10:13 踏月而来 阅读(384) 评论(0) 推荐(0)