用一个线程专门用于等待短信,一收到短信就创建一个线程用于处理逻辑,这个线程运行完之后就over了,不会再占资源的,占资源的是那个等待线程

解决方案 »

  1.   

    Thread对象一旦从run()返回后就不能重新调用start()了。不过这时候Thread对象依然存在(但是一丁点用处都没有了),这说明了在不必要的情况下,不要把Thread对象作为数据成员。
    要分清Thread对象和线程的区别,一个线程使用的资源有:
    1、Thread对象本身使用的内存(相对很小);
    2、线程的执行调用栈,在start()被分配,在run()返回时被回收(占主要的内存)。
    所以按照你所说的方法是正确的。
    但是要注意一个问题,就是启动、终止、销毁线程要用可观的开销。所以如果是信息接收频繁,那么就用同一个线程处理信息,用while循环,每处理完一个就进入等待。
      

  2.   

    在接收短信的时候,只要有短信发送过来,就会触发接收的事件。用while循环怎么设置。关键是时间间隔不是有我来控制的。
      

  3.   

    如果你是用串口来收发短信的话,只要实现SerialPortEventListener接口即可。
      

  4.   

    run()
    {
    int notifyValue = 3;
    while(true)
    {
          while(!notifies.include(notifyValue))
          {
                   wait();
          }
          notifies.delete(notifyValue);
          dealWithMessage();
    }
    }
    dealWithMessage()
    {
          //对信息的处理
    }otherClass
    {
    receiveMessage()
    {
          notifies.Add(3);
          NotifyAll();
    }
    }