黑马程序员技术交流社区

标题: 多线程的一个问题 [打印本页]

作者: 李贺晓    时间: 2012-10-26 22:03
标题: 多线程的一个问题
class ThreadTest
{
        public static void main(String[] args)
        {
                new Thread()
                {
                        public void main()
                        {
                                for(int i=0;i<80;i++)
                                {
                                        System.out.println(Thread.currentThread().getName()+"...."+i);
                                }
                        }
                }.start();

                for(int i=0;i<80;i++)
                                {
                                        System.out.println(Thread.currentThread().getName()+"...."+i);
                                }

                /*new Runnable()
                {
                        public void main()
                        {
                                for(int i=0;i<80;i++)
                                {
                                        System.out.println(Thread.currentThread().getName()+"...."+i);
                                }
                        }
         
                }.start();---------这里为什么不能用start方法*/

                Runnable r=new Runnable()
                {
            public void main()
                        {
                                for(int i=0;i<80;i++)
                                {
                                        System.out.println(Thread.currentThread().getName()+"...."+i);
                                }
                        }
                };
                new Thread(r).start();

        }
}
用Runnable实现的匿名内部类为什么不能直接在后面跟上start方法
作者: fdiskfix    时间: 2012-10-27 16:21
你Runnable创建的对象,并没有传递给Thread的构造函数中,Runnable是没有start()方法的

new Thread(new Runnable() {
                        public void main() {
                                for (int i = 0; i < 80; i++) {
                                        System.out.println(Thread.currentThread().getName()
                                                        + "...." + i);
                                }
                        }
                }).start();// ---------这里为什么不能用start方法
将匿名内部类传递给Thread构造函数就可以了.
作者: 崔政    时间: 2012-10-27 17:33
大哥。。Runnable是接口,你要实现里面的方法啊。里面只有一个run方法,你却写了个main(),run都执行不了更别说start了。。
  1. Runnable r=new Runnable()
  2.                 {
  3.                                 public void main()
  4.                         {
  5.                                 for(int i=0;i<80;i++)
  6.                                 {
  7.                                         System.out.println(Thread.currentThread().getName()+"...."+i);
  8.                                 }
  9.                         }

  10.                                                 @Override
  11.                                                 public void run() {
  12.                                                         // TODO Auto-generated method stub
  13.                                                         for(int i=0;i<80;i++)
  14.                             {
  15.                                     System.out.println(Thread.currentThread().getName()+"...."+i);
  16.                             }
  17.                                                 }
  18.                 };
  19.                
  20.                 new Thread(r).start();
复制代码
在最后一行代码,楼主你也清楚,想要start得new Thread对象,再把你的r给弄进去。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2