JUC学习总结(待补充)

JUC学习总结

    • 1.什么是JUC?
    • 2.线程和进程
    • 3.Lock锁
    • 4.生产者和消费者问题
    • 5.八锁现象
    • 6.不安全集合类
    • 7.Callable
    • 8.常用的辅助类
    • 9.读写锁
    • 10.阻塞队列
    • 11.线程池(重点)
    • 12.四大函数式接口
    • 13.Steam流式计算
    • 14.Forkjoin
    • 15.异步回溯
    • 16.JMM
    • 17.Volatile
    • 18.玩转单例模式
    • 19.深入理解CAS
    • 20.原子引用
    • 21.各种锁的理解

1.什么是JUC?

java.util工具包、包、分类

2.线程和进程

进程:程序的集合。

    一个进程往往可以包含多个进程,至少包含一个。java默认由两个进程,分别为main和GC。

线程:继承Thread类,实现Runnable接口,Callable创建线程。

并发和并行?

  并发(多线程操作同一个资源)

  • CPU一核,模拟出来多条线程。

  并行(多个人一起走)

  • CPU多核,多个线程可以同时进行;线程池

获取CPU核数:

System.out.println(Runtime.getRuntime().availableProcessors());

并发编程的本质:充分利用CPU的资源

线程的几个状态

  • 新生:NEW
  • 运行:RUNNABLE
  • 阻塞:BLOCKED
  • 等待:WAITING
  • 超时等待:TIMED_WAITING
  • 终止:TERMINATED

wait和sleep的区别?

1.来自不同的类
wait => Object
sleep => Thread
2.关于锁的释放
wait会释放锁,sleep不会释放锁。
3.使用的范围是不同的
wait必须在同步代码块中。
sleep可以在任何地方。
4.是否需要捕获异常
wait方法不需要捕获异常,sleep必须要捕获异常。

3.Lock锁

Synchronized锁与Lock锁的区别

  • Synchronized 内置的Java关键字,Lock是一个Java类。
  • Synchronized 无法判断获取锁的状态,Lock可以判断是否获取到了锁。
  • Synchronized 会自动释放锁,lock必须要手动释放锁,如果不释放锁,就会产生死锁。
  • Synchronized 当线程1获得锁时,线程2会处于等待状态,Lock锁就不一定会等待下去。
  • Synchronized 可重入锁,不可以中断的,非公平;Lock,可重入锁,可以判断锁,非公平(可以自己设置)。
  • Synchronized 适合锁少量代码同步问题,Lock适合锁大量的同步代码。

4.生产者和消费者问题

5.八锁现象

6.不安全集合类

7.Callable

8.常用的辅助类

9.读写锁

10.阻塞队列

11.线程池(重点)

12.四大函数式接口

13.Steam流式计算

14.Forkjoin

15.异步回溯

16.JMM

17.Volatile

18.玩转单例模式

19.深入理解CAS

20.原子引用

21.各种锁的理解

  • 公平锁、非公平锁
  • 可重入锁
  • 自旋锁
  • 死锁

你可能感兴趣的:(Java,java,开发语言,后端)