1.juc基本概念

1、概述

java uitl concurrent包下

相关包:

  • java.util.concurrent

  • java.util.concurrent.atomic

  • java.util.concurrent.locks

    • Condition

    • Lock

      • ReentrantLock 可重入锁(常用)

      • ReentrantReadWriteLock.ReadLock 读锁

      • ReentrantReadWriteLock.WriteLock 写锁

    • ReadWriteLock

  • java.util.function 函数式编程

2、进程和线程

java默认线程:main和Gc

java并不能真的开启线程,最后需调用本地方法,本地方法调用c++,java无法直接操作硬件

private native void start0();
  • 进程:一个程序包含多个进程,是资源分配的单位
  • 线程:一个进程包含多个线程,是cpu调度和执行的单位
    • Thread,Runable,Callable
2.1、并发和并行
  • 并发:多线程操作同一个资源
    • 单核cpu下快速交替
  • 并行
    • 多核cpu下多个线程可以同时执行
    • cpu核数:Runtime.getRuntime().availableProcessors();

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

public enum State {
        NEW,//新建
        RUNNABLE,//运行
        BLOCKED,//阻塞
        WAITING,//等待,死死等
        TIMED_WAITING,//超时等待
        TERMINATED;//终止
}
2.2、wait和sleep
  • wait
    • Object类
    • 会释放锁
    • 在同步代码块中使用
    • 不需要捕获异常
    • notify()或notifyAll唤醒
  • sleep
    • Thread类
    • 不会释放锁,抱着锁睡觉
    • 任何地方使用
    • 需要捕获异常
    • 到时自动醒来
posted @ 2021-04-25 13:15  jpy  阅读(8)  评论(0)    收藏  举报