Java线程
211haishui
朝着15k的目标前进,,,
展开
-
002 两个线程以指定步长交替打印数字与字母
题目:线程A负责打印数字,线程B负责打印字母,以指定步长n,每打印n个数字,则紧跟着打印一个字母。若字母已打印完,则紧接着仅打印数字即可,反之亦然。例如数字打印1~52,字母打印A-Z,则预期输出应为如下:12A34B56C…4950Y5152Z分析:本质上是利用线程的通信,来控制线程之间的交替执行。 1、即A每打印n次,就通知B打印一次; 2、...原创 2018-09-11 14:58:45 · 346 阅读 · 0 评论 -
003 ReentrantLock之公平锁、非公平锁
概念:如果一个锁是公平的,那么锁的获取顺序,就应该符合请求的绝对时间顺序。即是说等待锁的队列中,排在队列最前面的那个线程将最先获得锁。如果一个锁是非公平的,那么则不要求锁的获取顺序一定严格遵循请求时间的顺序。一、非公平锁实验设计;1、充塞20个线程获取非公平锁;2、在线程中打印当前线程名称和等待锁的线程列表;3、待20个线程执行完毕,观察当前线程名称与等待锁的线程列表顺序是否一致;...原创 2018-09-11 20:41:36 · 182 阅读 · 0 评论 -
001 Java线程死锁模拟
1、线程A获得lock1锁,睡一下,然后期望获得lock2锁;static class A extends Thread{ @Override public void run() { //先获取lock1锁 synchronized(lock1){ //睡一下 try { Thread.sleep(100); } catch (...原创 2018-09-10 19:14:39 · 120 阅读 · 0 评论 -
004 利用Callable的返回阻塞来等待一组线程的执行完毕
1、场景阐述;在某些情况下,需要获得一组线程的结果,给调用端。例如在Controller的某个请求方法中,执行了n个线程,需要将这n个线程的结果都响应给请求。2、方案设计;利用Callable的返回阻塞,来等待这n个线程的执行完毕,然后将这n个线程的结果响应回去;其执行时间,基本上取决于最耗时的那个线程。3、具体代码;public class ReturnSameTime {...原创 2018-09-21 21:28:56 · 1597 阅读 · 0 评论