Runnable.run()是不是等效Thread.start()开启一个真正的线程运行?private void dispatch(SelectionKey key) {
 try {
             Runnable r = (Runnable) (key.attachment());
               if (r != null) {
            r.run();
               }catch(Exception e) {
 System.out.println("dispatch error:");
       }
}其中r.run()是运行另一个类的run()方法,这样是不是也可以开启一个线程,让他以线程方式运作?
就想是用Thread.start()一样的效果?其高手帮忙说一下呀!

解决方案 »

  1.   

    线程不可能这样启动,至少是不应该。在给出的代码里,代码的目的很可能根线程一点关系都没有。楼主非常荣幸,碰上了一个最能偷懒或者是最能恶作剧的程序员。他本该定义一个自己的接口,如:
    public interface Command {
      void execute();
    }可他竟然用 Runable 代替了。奇懒!:)
      

  2.   

    运行run()方法并不等于运行start();strart()才是真正将线程放到等待队列.但此时也并不一定要马上开始执行。只是将这个线程置于可动行状态.这点是必须搞清楚的.r.run()只能说是调用了这个类的方法.并不是将线程放入线程池.......紧记紧记!!!!