控制线程的方法

控制线程的方法有join(),sleep()(休眠)、yield()(让步)、suspend()(挂起){容易造成死锁,不建议使用}、resume()(恢复{同样容易造成死锁,不建议使用});

简单的测试下sleep()和yield(),并说明线程在这两种状态下对cpu的持有状态和对同步锁的持有状态:




在这里不贴出程序运行的结果,大家可以根据代码在自己的机器上跑一下体会一下我接下来要阐述的,这要看起来比我直接贴出图要效果更好。

在没有添加同步锁synchornized(this){}的时候,线程若处于休眠状态,会将cpu让出,让其他处于就绪状态的线程来执行,yield()也是一样,但是yield会比比较一下线程之间的优先级,只有比自己优先级高或者相等的的才有可能获得cpu的执行权

sleep不会进行比较。

线程若是加上了同步锁,则在这两种状态下是不会释放掉同步锁的,也就是因为同步锁的原因即使线程此时让出了cpu的使用权,其他的线程由于得不到同步锁而导致线程阻塞无法运行。所以虽然会让出cpu但是其他的线程却会因为同步锁的原因而备阻塞住。

join(){伪代码如下}:

    主线程/其他线程1{

            //当程序运行到这一步的时候主线程/其他线程1会停止运行而等待

            //其它线程2,让它来运行程序,可以传一个参数表示主线程/其它线程1

            //最多可以等待的时间

            其它线程2.join();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值