现在我有一个函数
比如是fun();
线程形如下:
fun(new Runnable()
{
   public void run()
   {
      System.out.println("here");
   }
});
 请问当fun()执行的时候,线程会执行???(实际我遇到了这种情况mt.composite.getDisplay().getDefault().syncExec(new Runnable() {
public void run() 
{
.... }
});
)
但是线程执行不是要start()方法吗??
如何控制这个线程呢?

解决方案 »

  1.   

    像你那样,fun里的不会新起一个线程来执行,这里跟一个普通的没有什么区别
      

  2.   

    首先,这是一个匿名内部类的使用方法,所以,在这里调用run方法是肯定能执行的。但是
    我们也知道,一个线程有两种构造方法:
    1.使用继承方法:
    class TestThread extends Thread{
    首先,这是一个匿名内部类的使用方法,所以,在这里调用run方法是肯定能执行的。但是
    我们也知道,一个线程有两种构造方法:
    1.使用继承方法:
    class TestThread extends Thread{
    run(){//重写run方法

    }
    }new TestThread().start();//创建线程,调用start()方法。2.使用实现接口的方法:
    class TestThread implements Runnable{
    run(){//重写run方法

    }
    }new Thread(new TestThread).start();注意第二种方法,创建线程需要TestThread类的一个实例作为参数,而且需要new 出一个Thread 的实例出来,而你写的代码可以等价为:
    class Test implements Runnable{
    run(){
    System.out.println(“here”);
    }
    }fun(new Test());//调用fun();所以,你写的代码和创建一个线程的代码是有本职与别的,你并没有new Thread 出来,所以,这不是线程的创建方法,而是一个普通类的调用发放,只不过是用匿名内部类来实现而已。}