13.3.3 线程让步

所谓线程让步,就是使当前正在运行的线程对象退出运行状态,让其他线程运行,其方法是通过调用yield()来实现。这个方法不能将运行权让给指定的线程,只是允许这个线程把运行权让出来,至于给谁,这就是抢占功能的事情了。

【实例13.9】现在列举一个实例。


01 ///这是一个主运行类

02 ///在主运行方法中,通过创建两个线程对象,让其交替执行

03 public class thread7

04 {

05 public static void main(String[]args)

06 {

07 compute t=new compute();

08 compute1 t1=new compute1();

09 t.start();

10 t1.start();

11 }

12 }

13 ///创建一个线程类

14 ///通过循环语句来输出十个整型数据

15 ///通过让步程序让此线程停止运行

16 class compute extends Thread

17 {

18 int i=0;

19 public void run()

20 {

21 for(int i=0;i<10;i++)

22 {

23 System.out.println(i);

24 yield();

25 }

26 }

27 }

28 ///创建一个线程类

29 ///通过循环语句来输出说明语句

30 class compute1 extends Thread

31 {

32 public void run()

33 {

34 for(int i=0;i<10;i++)

35 {

36 System.out.println("这个数字是:"+i);

37 }

38 }

39 }


【代码说明】第16~39行定义了两个线程,其中第24行表示第一个线程会出现让步的情况。第9~10行开始运行线程。

【运行效果】


0 这个数字是:0

这个数字是:1

这个数字是:2

这个数字是:3

这个数字是:4

这个数字是:5

这个数字是:6

这个数字是:7

1 这个数字是:8

这个数字是:9

2 3

4 5

6 7

8 9


从运行效果来看,第1个线程比第2个线程运行的几率要小,因为它总是放弃运行权。