多线程基础知识

进程的管理和调度:

1.进程创建后进入就绪态(不是直接进入运行态),和其他进程一起竞争CPU
2.只有在就绪态队列中的进程才有资格竞争CPU
3.所有阻塞队列中的进程没有资格竞争CPU
4.阻塞态的进程只能由运行态的进程唤醒
5.阻塞态进程被唤醒后不是立刻进入运行态
6.进程被进程自己阻塞

线程创建:

继承:

public class Thread() extends Thread {
	public Thread(){
		this.start;
	}
}

接口:

public class Thread() implements Runnable {
	public Thread(){
		new Thread(this).start();
	}
}

上述两种因为JAVA只能单类继承,故用接口实现 程序可拓展性更强。

锁:

private static final Object lock = new Object();
synchronized(lock) {

}

lock的类型必须是Object,由于所有类的基类都是Object 对象都可以当做锁来用
(int等部分类可能内部原理,无法做锁)

锁的基础及原理:
1.锁必须是所有相关进程所共享的,大家都知道这个锁的存在

原理:
当一段程序被锁包围,当一个进程执行到锁时,先判断该锁是否为锁上状态
若锁上:则该进程被阻塞并进入该锁下的阻塞队列
若未锁:先上锁,进程再进入

当锁内的进程执行完程序后,解开锁并且将锁下阻塞队列所有程序唤醒

volatile关键字:

该关键字是不对其进行寄存器优化。
但在线程中,若线程中公用的数据被寄存器优化,则多个线程无法共同操作一个空间的内容。(每个进程操控自己所指的寄存器内的值,而不是公用的空间)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔幻音

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值