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个线程运行的几率要小,因为它总是放弃运行权。