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

 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之前

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值