线程的基本概念

本文深入探讨了Java中的进程和线程概念,包括进程作为资源分配单位和线程作为执行调度单位的角色。详细介绍了启动线程的两种方式,以及线程的生命周期状态,如新建、就绪、运行、等待和终止。此外,还讲解了线程同步的关键概念,如`synchronized`关键字的作用,确保原子性和可见性,并讨论了不同类型的锁,如自旋锁和偏向锁。最后,提到了异常处理对锁的影响,以及在不同场景下选择合适的锁策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程和线程的概念:

答案:进程就是一个程序运行起来的状态,线程是一个进程中的不同的执行路径。

专业:进程是OS分配资源的基本单位,线程是执行调度的基本单位。

启动线程的两种方法:

new Thread().start() >>> static class MyThread extends Thread{}

new Thread(Runnable).start >>> static class MyRun implements Runnable{}

Sleep:睡眠,当前线程暂停一段时间让给别的线程去运行

Yield:当前线程正在执行的时候停止下来进入等待队列,回到等待队列里,在系统的调度算法里头还是有可能把刚才的线程拿回来继续执行

Join:在自己当前线程加入你调用Join的线程,t2.join 加入t2线程 

线程状态:

当我们new一个线程时,还没有调用start(),该线程处于新建状态;

当线程对象调用start()方法时候,他会被线程调度器来执行,这整个状态叫作Runable,Runable内部有两个状态(1)Ready就绪状态(2)Running运行状态 ;

就绪状态是说线程放在CPU的等待队列里面去排队等待CPU运行,等待真正放在CPU上去运行的时候才叫Running运行状态;

如果线程执行完了,就会进入Teminated结束状态;

在Runnable这个状态里头还有其他一些状态的变迁TimedWaiting等待、Waiting等待、Blocked阻塞;

synchronized:多线程去访问同一个资源的时候,一般需要对这个资源上锁

private object o = new Object(); synchronized(o)

synchronized(this)锁定当前对象 

静态方法:synchronized代表synchronized(T.class)锁的是T类的对象 

synchronized即保证了原子性,有保证了可见性;

synchronized另一个属性:可重入,就是你拿到这把锁之后不停地加锁,但锁定的是同一个对象。 

异常锁:程序在执行过程中,如果出现异常,默认情况锁就会被释放 

偏向锁:记录线程ID

自旋锁:如果线程争用,就升级为自旋锁

重量级锁:10次 

执行时间短,线程数少,用自旋

执行时间长,线程数多,用系统锁 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值