首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

内部类编译时有关问题?

2012-01-10 
内部类编译时问题?????publicclassSimpleThreads{//Displayamessage,precededbythenameofthecurrentthread

内部类编译时问题?????
public   class   SimpleThreads   {

        //Display   a   message,   preceded   by   the   name   of   the   current   thread
        static   void   threadMessage(String   message)   {
                String   threadName   =   Thread.currentThread().getName();
                System.out.format( "%s:   %s%n ",   threadName,   message);
        }

        private   static   class   MessageLoop   implements   Runnable   {
                public   void   run()   {
                        String   importantInfo[]   =   {
                                "Mares   eat   oats ",
                                "Does   eat   oats ",
                                "Little   lambs   eat   ivy ",
                                "A   kid   will   eat   ivy   too "
                        };
                        try   {
                                for   (int   i   =   0;   i   <   importantInfo.length;   i++)   {
                                        //Pause   for   4   seconds
                                        Thread.sleep(4000);
                                        //Print   a   message
                                        threadMessage(importantInfo[i]);
                                }
                        }   catch   (InterruptedException   e)   {
                                threadMessage( "I   wasn 't   done! ");
                        }
                }
        }

        public   static   void   main(String   args[])   throws   InterruptedException   {


                //Delay,   in   milliseconds   before   we   interrupt   MessageLoop


                //thread   (default   one   hour).
                long   patience   =   1000   *   60   *   60;

                //If   command   line   argument   present,   gives   patience   in   seconds.
                if   (args.length   >   0)   {
                        try   {
                                patience   =   Long.parseLong(args[0])   *   1000;
                        }   catch   (NumberFormatException   e)   {
                                System.err.println( "Argument   must   be   an   integer. ");
                                System.exit(1);
                        }

                }

                threadMessage( "Starting   MessageLoop   thread ");
                long   startTime   =   System.currentTimeMillis();
                Thread   t   =   new   Thread(new   MessageLoop());
                t.start();

                threadMessage( "Waiting   for   MessageLoop   thread   to   finish ");
                //loop   until   MessageLoop   thread   exits
                while   (t.isAlive())   {
                        threadMessage( "Still   waiting... ");
                        //Wait   maximum   of   1   second   for   MessageLoop   thread   to
                        //finish.
                        t.join(1000);
                        if   (((System.currentTimeMillis()   -   startTime)   >   patience)   &&
                                        t.isAlive())   {
                                threadMessage( "Tired   of   waiting! ");
                                t.interrupt();
                                //Shouldn 't   be   long   now   --   wait   indefinitely


                                t.join();
                        }

                }
                threadMessage( "Finally! ");
        }
}
1,这就一个文件可编译后怎么出来三个class呀???
 而它只有一个内部类。
2,此段程序中如何在运行时通过String   []   args来输入信息???
3,此段程序中怎么来体现中方法interrupt的调用???
4,

[解决办法]
第一个问题我也不清楚
第二个问题:
String[] args实际上就是你运行程序时输入的参数
[解决办法]
2.java SimpleThreads 3
3.interrupt()使程序跳出for循环进入catch块
[解决办法]
我编译出来只有两个。

热点排行