JUC-什么是JUC-01

JUC-什么是JUC-01

什么是JUC

java.util.concurrent 工具包

业务:普通的线程代码Thread

Runnable:没有返回值,效率相比Callable相对较低

线程和进程

线程、进程

进程:1个程序,程序的集合

一个进程往往包含多个线程,至少包含1个

java默认两个线程,mainGC

线程:开了一个进程Typora,写字,自动保存(线程负责)

对java:Thread,Runnable,Callable

java无法直接操作线程,通过本地方法

并发,并行

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

CPU一核,模拟出来多条线程,快速交替

并行(多个人一起行走)

public static void main(String[] args) {
  //获取CPU的核数
    System.out.println(Runtime.getRuntime().availableProcessors());
}

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

线程的几个状态

public enum State {
    //新生
    NEW,

    //运行
    RUNNABLE,

    //阻塞
    BLOCKED,

    //等待,死死得等
    WAITING,

    //超时等待
    TIMED_WAITING,

    //中止
    TERMINATED;
}

wait和sleep

  • 来自不同的类

wait=>Object

sleep=>Thread

  • 关于锁的释放

wait会释放锁,sleep睡觉了,抱着锁睡觉,不会释放

  • 使用的范围不同

wait 必须再同步代码块中

sleep 可以在任何地方睡

  • 是否需要捕获异常

wait不需要捕获异常

sleep必须要捕获异常

Lock锁

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-euO0B6iM-1604313716057)(/Users/chenxiwen/Library/Application Support/typora-user-images/image-20201102120238752.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-48bVFNEn-1604313716059)(/Users/chenxiwen/Library/Application Support/typora-user-images/image-20201102120158567.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fNdwEBmr-1604313716060)(/Users/chenxiwen/Library/Application Support/typora-user-images/image-20201102145218051.png)]

公平锁:先来后到

非公平锁:可以插队(默认)

Synchronized 和Lock的区别

  1. Sychronized是内置java关键字,Lock是个java类
  2. Sychronized无法判断获取锁的状态,Lock可以判断是否获取到了锁
  3. Sychronized会自动释放锁,Lock会手动释放锁,不释放会导致死锁
  4. sychronized线程1(获得锁,阻塞),线程2(等待,傻傻得等);Lock锁不一定会等待下去
  5. sychronized 可重入锁,不可以中断的非公平;Lock,可重入锁,可以判断,非公平(可以设置)
  6. Sychronized适合锁少量的代码同步问题,Lock锁适合锁大量的同步代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值