生产者与消费者问题
在面试中,生产者与消费者是高频问题之一
1.生产者和消费者问题 Synchronized 版
public class A {public static void main(String[] args) {Data data new Data();new Thread(() -> {for (int i 0; i < 10; i) {try {data.increment…
前言
AtomicIntegerArray提供了对数组元素的原子操作,与其他非数组的原子类相比,它的成员不是volatile的而是final的了。
JUC框架 系列文章目录
成员 private static final Unsafe unsafe Unsafe.getUnsafe();private static final int base unsafe…
Java 对象是什么样子的?
class Student{
int age;
String name;
}Student s new Student(18, “zhangsan”); 这里的 s 变量,就是我们常说的引用,这里是强引用。指向对象中的 Java对象。 很多人可能认为,堆中存储了 age 18, na…
文章目录LinkedBlockingQueue - 基于链表的阻塞队列继承关系源码解析LinkedBlockingQueue - 基于链表的阻塞队列 啥是阻塞: ① 队列已经容量满,在put的话,该线程一直等待,直到容量不满才可以put进去 ② 队列已经无元素可取&am…
无锁实现线程安全
public final class Singleton{public static void main(String[] args) {Account.demo(new AccountCas(10000));}
}
class AccountCas implements Account{private AtomicInteger balance;public AccountCas(int balance){this.balance new AtomicInteger(…
12. 四大函数式接口
新时代的程序员:lambda表达式、链式编程、函数式接口、Stream流式计算
函数式接口:只有一个方法的接口,可以有一些默认的方法
如:Runnable接口函数 1)Function 函数型接口 public class Functio…
基本类型原子类
AtomicInteger、AtomicBoolean、AtomicLong。 常用API:
public final int get();// 获取当前的值
public final int getAndSet(int newValue);// 获取当前值,并设置新值
public final int getAndIncrement();// 获取当前的值࿰…
实现了Lock接口 内部也维护了一个同步器Sync继承自AQS,Sync是抽象的,两个实现NonFairSync和FairSync
public ReentrantLock() {sync new NonfairSync();
}
public ReentrantLock(boolean fair) {sync fair ? new FairSync() : new NonfairSync();
}非…
CAS 产生的 ABA 问题是什么?怎么解决? CAS操作可能会出现ABA问题,所谓ABA问题是指在执行CAS操作时,由于CAS操作只对值进行比较,不考虑值的版本等其它附加信息,因此可能导致某个线程误认为成功地将值从A修改…
目录
一、ctl介绍
二、线程池ctl源码
三、线程池ctl分析
1、private static int ctlOf(int rs, int wc) { return rs | wc; }
2、private final AtomicInteger ctl new AtomicInteger(ctlOf(RUNNING, 0));
3、private static int runStateOf(int c) { return c &am…
目录 一、说明二、代码示例 一、说明 1.利用字段更新器可以针对对象的域(Field) 2.只能配合volatile修饰的字段使用,否则会出异常Exception in thread “main” java.lang.IllegalArgumentException: Must be volatile type 3.常见有AtomicRe…
1、什么是活锁
活锁是指,线程没有发生阻塞,但依然执行不下去的情况。
2、活锁的例子
如果两个线程互相改变对方的结束条件,就可能导致双方谁也无法结束。
比如这个程序:
public class TestLiveLock {static volatile int cou…
public class Test9 {static Object lock new Object();static int num 1;static int loopNum 5;/*** 线程t1, t2, t3分别交替输出 a, b, c > 最终输出 abcabcabcabcabc**/public static void main(String[] args) throws InterruptedException {Thread t1 new Thread((…