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;