Java并发
Java面试与理解
coding_zhan
主营Java、大数据。
展开
-
wait、sleep、yield和join的区别
wait是Object的方法,会释放掉锁,等待其他线程惊醒notify唤醒。使用前必须得到锁,所以一般于synchonized一起使用。 sleep抱着锁睡觉,阻塞线程,优先级部分高低运行。 yield,让当前进程进入就绪状态。只能让高优先级的进程先运行。 join:假如一个线程调用了t.join,那么这个线程就会阻塞,转而去执行t这个线程,如果有多个t.join,如t1.join、t2.join,那么就会先去执行t1和t2,直到两个都执行完了,才回去执行自己的进程。这里要注意,如果t1抢到了时间片,那么就原创 2020-06-22 22:11:24 · 290 阅读 · 0 评论 -
写入时复制思想以及CopyOnWriteArrayList类的使用
写入时复制 顾名思义,在读的时候是不用加锁的,随便读,毕竟读操作并不会改变其数据。 在写入的时候,是需要加锁的,在操作的过程中,将原本数据复制过来,然后再修改或者添加想要的内容。 这是一个思想,自己查了一下,在许多方面都有应用。这里不细展开。 CopyOnWriteArrayList 这个类其实日常开发中应该不会经常遇到,我们先看一下他的源码(基于JDK1.8): 其实最主要是看他的add添加方法,也就是用到了我们上面提到的写入时复制 ...原创 2020-06-14 12:45:50 · 185 阅读 · 1 评论 -
Java并发:生产者与消费者模型、虚假唤醒
手写生产者与消费者模型 public class Again { private int num = 0; // 生产者 public synchronized void add() throws InterruptedException { // 先判断是否可以生产,条件是num==0 if (num!=0){ // 不能生产,则等待 //System.out.println(Thread.curre原创 2020-06-12 14:31:53 · 131 阅读 · 0 评论