摘要: 1.cpu密集型(例如while循环 ) cpu密集的意思是该任务需要大量的运算,而没有阻塞,cpu一直全速运行。 cpu密集任务只有在真正的多核cpu上才可能得到加速(通过多线程) 而在单核cpu上,无论你开几个模拟的多线程该任务都不可能得到加速,因为cpu总的运算能力就那些 cpu密集型任务配置 阅读全文
posted @ 2020-01-08 23:34 从精通到陌生 阅读(514) 评论(0) 推荐(0) 编辑
摘要: 手写线程池: AbortPolicy:直接抛出RejectedExecutionException异常阻止系统正常运行。 public class MyThreadPoolDemo { public static void main(String[ ]args) { ExecutorService 阅读全文
posted @ 2020-01-08 20:19 从精通到陌生 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力来干涉那他们都将无法推进下去,如果系统资源充足,进程的资源请求都能得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。 例子: class HoldLockThread implements R 阅读全文
posted @ 2020-01-08 19:04 从精通到陌生 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 注意点:FutureTask是Runnable的实现类,它的构造器可以传Callable接口的实现类。 例子如下: class MyThread implements Callable<Integer> { @Override public Integer call() throws Excepti 阅读全文
posted @ 2020-01-07 22:09 从精通到陌生 阅读(1006) 评论(0) 推荐(0) 编辑
摘要: class MyResource { private volatile boolean FLAG = true; //默认开启,进行生产+消费 private AtomicInteger atomicInteger = new AtomicInteger(); BlockingQueue<Strin 阅读全文
posted @ 2020-01-05 23:18 从精通到陌生 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 多线程之间按顺序调用,实现A →B→C三个线程启动,要求如下: AA 打印2次,BB 打印3次,CC打印4次,按顺序连续打印2轮。 class ShareResource { private int number = 1; private Lock lock = new ReentrantLock( 阅读全文
posted @ 2020-01-05 21:55 从精通到陌生 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 1.原始构成 synchronized是关键字属于jvm层面,monitorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖于monitor对象,只有在同步块或者方法中才能调wait/notify等方法) monitorexit lock是具体类(java.ut 阅读全文
posted @ 2020-01-05 20:09 从精通到陌生 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 在多线程领域:所谓阻塞,在某些情况下会挂起线程(即阻塞),一旦条件满足,被挂起的线程又会自动被唤醒 为什么需要BlockingQueue 好处是我们不需要关心什么时候需要阻塞线程,什么时候需要唤醒线程,因为这一切BlockingQueue都给你一手操办了,在concurrent包发布以前,在多线程环 阅读全文
posted @ 2020-01-05 13:08 从精通到陌生 阅读(583) 评论(0) 推荐(0) 编辑
摘要: 1.让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒。 2.CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞。其它线程调用countDown方法会将计算器减1(调用countDown方法的线程不会阻塞),当计数器的值变成零时,因调用await方法 阅读全文
posted @ 2020-01-04 21:15 从精通到陌生 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 并发:多个线程访问同一份资源。 并行:一边听歌一边写论文就是并行,同时做事。 volatile是java虚拟机提供的轻量级的同步机制。 voliatile有三大特性: 1.保证可见性。 2.不保证原子性。 3.禁止指令重排。 JMM(Java内存模型 Java Memory Model)本身是一种抽 阅读全文
posted @ 2020-01-04 11:53 从精通到陌生 阅读(493) 评论(0) 推荐(0) 编辑