进程和线程,状态,sleep和yield区别

本文深入探讨了进程与线程的概念,解释了它们在计算机系统中的作用。进程是程序的实例,拥有独立的内存空间,而线程是进程中的执行单元。线程的状态包括新建、就绪、运行、睡眠、等待、挂起、恢复和死亡。线程的sleep和yield方法在并发控制中有不同作用,sleep会使线程进入阻塞状态,而yield仅让出当前执行机会。此外,介绍了如何在Java中设置线程优先级,强调需在start之前设置。

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

 1)进程和线程

 

进程:是运行的程序的实例,他具有一块独立的内存空间,多个进程是可以并发运行的

例:比如 电脑在运行的时候既可以打开记事本又可以看视频,记事本是一个进程,看视频也是一个进程

线程:线程位于进程中,是进程中的一条执行线索,一个进程中可能有多个线程,线程是进程运行的最小基本单位,一个进程中至少要有一个线程

例:比如说一个软件(进程)同时下载几个文件(多个线程

2)线程的状态:

 新建 (Born) :  新建的线程处于新建状态
 就绪 (Ready) : 在创建线程后,start() 方法被调用它将处于就绪状态
 运行 (Running) : 线程在开始执行时(run)进入运行状态
睡眠 (Sleeping) : 线程的执行可通过使用 sleep() 方法来暂时中止。在睡眠结束后,线程将进入就绪状态
 等待 (Waiting) : 如果调用了 wait() 方法,线程将处于等待状态。用于在两个或多个线程并发运行时。
挂起 (Suspended) : 在临时停止或中断线程的执行时,线程就处于挂起状态。 //suspend()  已过时,有固定的死锁倾向
恢复 (Resume) : 在挂起的线程被恢复执行时,可以说它已被恢复。
 阻塞 (Blocked): 在线程等待一个事件时(例如输入/输出操作),就称其处于阻塞状态。
死亡 (Dead) – 在 run() 方法已完成执行或其 stop() 方法被调用之后,线程就处于死亡状态。 //stop 方法有两个重载,均已过时,有固定的不安全性
            

 *********

3)sleep 和 yield 的区别:

sleep:比如说一群绵羊在吃草,有一只特别凶猛,草都快要被他吃完了,主人让它睡5分钟,5分钟后起来继续吃草(处于就绪状态)

yield:还是这只绵羊,主人把它从草堆中打出去了,让它给其他的羊让一让位置,但是它出去之后可以立即回来,只要它自己可以

 1) sleep是Thread类的一个静态方法,该方法会让当前正在 执行的线程暂停执行,从而将执行机会让给其他线程执行。
sleep(long mills)参数指定当前线程暂停执行的时间,经过这段阻塞时间后,该线程会进入就绪状态,等候线程调度器的调度
 sleep方法声明抛出了InterruptedException异常,所以调用sleep方法时要么在方法开始处抛出异常要么使用try{}..catch{}块进行捕获。 
        
2) yield方法只会给优先级相同或更高优先级的线程执行机会。yield不会将线程转入阻塞状态,只是强制当前线程进入就绪状态。
因此完全有可能某个线程调用yield方法暂停后,立即又获得处理器资源被执行。yield方法没有声明抛出任何异常。
 //  通俗地说 yield()方法只是把线程的状态由执行状态打回准备就绪状态

4)java中如何设置线程的 优先级

        设置线程的优先级要在start之前

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值