JUC并发编程学习笔记

1.进程和线程

进程: 一个程序, QQ.exe Music.exe程序的集合;
一个进程往往可以包含多个线程, 至少包含一个!
线程: 一个进程的多个子程序, 敲代码可以一边打字一边自动保存

2.Java真的可以开启线程吗?

不可以, start方法内部调用的是一个native本地方法—start0(), 属于底层的C++开启的线程, Java无法直接操作硬件

3.并发和并行

并发(多线程操作同一个资源):
CPU只有一个核心, 模拟出来多条线程, 抢资源, 看起来像多线程, 其实还是单线程
并行(多个人一起行走):
CPU 由多个核心, 多个线程可以同时执行

4.wait 方法和 sleep方法的区别

wait方法位于Object类, sleep方法位于Thread类
wait方法会释放锁(醒着的) ,sleep方法不会释放锁(抱着锁睡觉)

5.synchronized 和Lock 的区别

  1. synchronized是内置的Java关键字, Lock是一个Java类
  2. synchronized无法判断获取锁的状态, Lock可以判断是否获取到了锁
  3. synchronized会自动释放锁, lock必须要手动释放锁! 如果不释放锁, 会死锁
  4. synchronized下,假如线程1(获取到了锁,但是阻塞了)、线程2(会等待,一直傻傻的等); Lock锁就不一定会等下去
  5. synchronized可重入锁,不可以中断的,非公平的; Lock,可重入锁, 可以自定义公平与否
  6. synchronized 适合锁少量的代码同步问题, Lock适合锁大量的同步代码!

6.线程的六种状态?

public enum State {
	//新生
	NEW,
	//运行
	RUNNABLE,
	//阻塞态
	BLOCKED,
	//等待
	WAITING,
	//超时等待
	TIMED_WAITING,
	//终止
	TERMINATED;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值