public class MyMmsReceive implements Runnable {
...
public static void main(String[] args) throws Exception {
 MyMmsReceive receiver = new MyMmsReceive();
 receiver.start();
   }
 public void run() {          while (true) {            try {              Thread.sleep(50);            }
            catch (Exception e) {              System.out.println(e);            }          }        }}
我在这里为什么reciver.start不能调用到run()?
而当我把程序改成:
...
public static void main(String[] args) throws Exception {
 MyMmsReceive receiver = new MyMmsReceive();
Thread t1 = new Thread(receiver);
 t1.start();
   }
...
就可以调用了,可是我感觉这时候调用的是另一个thread,因为他不能完成原来类里面能完成的功能了。我应该如何修改?

解决方案 »

  1.   

    1.receiver是MyMmsReceive 的实例,它只是实现了Runnable,而Runnable接口是没有start这个方法的2.这样写就可以了
      

  2.   

    MyMmsReceive receiver = new MyMmsReceive();
    Thread t1 = new Thread(receiver);
     t1.start();
      

  3.   

    实现了Runnable接口的类并不是一个线程类,只是声明这个类实现了这个接口并将实现这个接口下的run方法而已
      

  4.   

    可是我
    MyMmsReceive receiver = new MyMmsReceive();
    Thread t1 = new Thread(receiver);
     t1.start();
    之后不能调用在
    receiver.start();
    for(;;);
    时候调用的socket了。
      

  5.   

    以前我写成
    public class MyMmsReceive implements Runnable {
    ...
    public static void main(String[] args) throws Exception {
     MyMmsReceive receiver = new MyMmsReceive();
     receiver.start();
       }
    调用socket类等待参数传递{
    }
    }
    这样的时候下面的socket类在有参数传进来的时候会自动执行
    但是我写成
    MyMmsReceive receiver = new MyMmsReceive();
    Thread t1 = new Thread(receiver);
     t1.start();
    的时候那个socket类就不能自动调用了
      

  6.   

    不知道可不可以把socket类的调用放到run()方法里去
      

  7.   

    那能不能解释一下
    Thread t1 = new Thread(receiver);
    这句什么意思?为什么把receiver放在那里?
      

  8.   

    Thread 及其子类是线程实现Runnable接口的类只能被称作“可运行的xxx”Thread t1 = new Thread(receiver);
    这句代码创建一个新的Thread实例,并且将receiver作为被run的对象---
    ...
    就可以调用了,可是我感觉这时候调用的是另一个thread,因为他不能完成原来类里面能完成的功能---这种感觉是错误的,自始至终你只创建了一个thread,如果你连这个唯一的thread都嫌多余的话,那就不是一个多线程程序了
      

  9.   

    提个建议:你的MMSReceiver应该被设计成一个线程管理器ThreadManager
    即使考虑最简单的情况,也至少是Thread的子类