请完成下列Java程序:运行3个线程,每一个线程有自己的标志,用a,b,c表示,每个线程显示一个“Start”信息和一个“End”信息并且间隔地显示2个“Loop”信息(间隔变化为(0.5-2)秒之间的随机延迟)。 程序运行结果如下:(注:由于时间间

admin2009-01-15  37

问题 请完成下列Java程序:运行3个线程,每一个线程有自己的标志,用a,b,c表示,每个线程显示一个“Start”信息和一个“End”信息并且间隔地显示2个“Loop”信息(间隔变化为(0.5-2)秒之间的随机延迟)。
   程序运行结果如下:(注:由于时间间隔为随机数,所以,运行结果的顺序不惟一)
     a Start
     b Start
     c Start
     b Loop
     a Loop
     b Loop
     b End
     c Loop
     a Loop
     a End
     c Loop
     c End
   注意:请勿改动main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。
     public class ex2_2 implements Runnable {
       static char flag2_2 = ’a’;
       public static void main(String[]  arg)  {
               ex2_2 obj2_2 = new ex2_2();
               Thread thread2_2 = new Thread(obi2_2);
               thread2_2.start();
               thread2_2 = new Thread(obj2_2);
               thread2 2.start();
               thread2_2 = new Thread(obi2_2);
               thread2_2, start ( );
      }
       public void run()  {
               char myflag2_2;
               synchronized(this)  {
               _________________;
            }
               System.out.println(myflag2_2 +" Start");
               for(int i=0; i<2; i++)  {
                       try {
                              Thread.sleep(rand(500,2000));
                              System.out.println(myflag2_2 +" Loop");
                       } catch(InterruptedException ie)  {
                              System.out.println(ie);
                  }
             }
             System.out.println(myflag2_2 +" End");
          }
          final private int rand(int low, int high)
               return(_________________);
          }
        }

选项

答案myflag2_2 = flag2_2++ ((int)((high-low+1)*(Math.random())))+low

解析 本题主要考查线程的创建与同步和控制随机数产生范围的算法。解题关键是,熟悉线程的概念和使用,线程的同步控制, char类型数据的操作,以及熟悉随机数产生的方法Math.random(),并且能够进一步根据需要控制随机数产生的范围。在本题中,main()方法中创建3个线程,这3个线程使用obj2_2对象。线程调用start()方法来中断,使一个新的线程开始执行,并且调用run()方法。第1空,run()方法为自己设置一个线程的标志,并为下一个线程的使用增加这个标志值,由于此时线程正在处理中,因此在同步块中完成修改标志的语句放在同步块中。第2个空,通过low和high两个参数,控制产生随机数的范围,将基本的数学思想应用于程序设计中。
转载请注明原文地址:https://kaotiyun.com/show/Shnp777K
0

最新回复(0)