文章分类 -  多线程

摘要:2.概念 countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。 是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就可以恢复工作了。 countDownLatch 阅读全文
posted @ 2020-03-13 09:02 jack-jin 阅读(207) 评论(0) 推荐(0)
摘要:java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁更加方便。如果一个字段被声明成volatile,java线程内存模型确保所有线程看到这个变量的值是一致的。 一句话即, volati 阅读全文
posted @ 2020-03-13 08:53 jack-jin 阅读(165) 评论(0) 推荐(0)
摘要:2.线程池(3+7+4)为什么会有池? 提高程序的性能,提高使用率,降低消耗。 3种方法(注意,阿里开发手册不允许使用这三种方法,容易OOM) Executors 可以有三种创立线程池的方法。 public static void main(String[] args) { // Executors 阅读全文
posted @ 2020-03-06 21:58 jack-jin 阅读(91) 评论(0) 推荐(0)
摘要:// java能够创建线程吗? 不能! // 新建 NEW, // 运行 RUNNABLE, // 阻塞 BLOCKED, // 等待 WAITING, // 延时等待 TIMED_WAITING, // 终止! TERMINATED; /* * JUC之后的操作 * Lock锁 + lambda表 阅读全文
posted @ 2020-03-06 21:38 jack-jin 阅读(68) 评论(0) 推荐(0)
摘要:Synchronized 和 Lock 区别 1、Synchronized 是一个关键字、Lock 是一个对象 2、Synchronized 无法尝试获取锁,Lock 可以尝试获取锁,判断; 3、Synchronized 会自动释放锁(a线程执行完毕,b如果异常了,也会释放锁),lock锁是手动释放 阅读全文
posted @ 2020-03-06 21:36 jack-jin 阅读(98) 评论(0) 推荐(0)