线程的放弃

public static void yield()

public class yield extends Thread {
public void run(){
for (int i =0 ;i<10;i++){
sout(Thread.currentThread().getName+i);
Thread.yield();
}
}
}

1.如果只是想放弃当前线程的CPU时间片,可以用Sleep和SwitchToThread
2.上述两个函数只是在当前调度内放弃CPU时间,如果你是要根据条件查询的结果决定是否放弃时,可以采用
while(条件){Sleep(0);}
或while(条件){SwitchToThread();}
3.如果不想通过查询的方式,可以采用异步通知的方式。比如调用WaitForSingleObject某一事件(Event)这样的阻塞函数,等待被置信。该函数首先在用户空间检查是否被置信。如果不是,则进入内核态放弃当前线程的CPU时间片,然后等待被外部置信;也可以直接SuspendThread自身,等待外部唤醒,原理和WaitForSingleObject类似。
4.如果想永久放弃时间片,可以让线程结束,直接return 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值