public void run(){
while(Ture){
getSendData();
try{
Thread.sleep(1000);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
}
我单击一次按钮为一秒触发getSendData()事件 但是随着不断的单击按钮 触发getSendData()事件的速度越来越快呢;
我想是不是应该先每次单击按钮时 先结束进程 小弟新手 可以写的详细些吗?

解决方案 »

  1.   

    应该是你每次响应单击按钮事件的时候都开了新的线程,后来有多个线程在同时运行。可以用thread类的destroy()函数来杀死先开的线程。
    或者while(true)那里改成private boolean isRun = true;public void run(){ while(isRun){ 
    getSendData(); 
    try{ 
    Thread.sleep(1000); 

    catch(InterruptedException e){ 
    e.printStackTrace(); 



    然后自己做一个函数public void killThread(){
        isRun = false;
    }
      

  2.   

    你的意思可能是每次单击,都执行了run方法,
    自然频率高了。
    你可以在点击按钮的事件里,加一个判断,
    如果此线程为null,则new 新的线程,然后起动,否则不再去启动。或者,先将线程停止,然后再启动在按钮的事件里。
      

  3.   

    thread 的destory()方法已经过时,必要再用了
      

  4.   

    具体为什么destory()不建议在用,参照thread的api即可
      

  5.   

    可以用boolean来结束或启动线程.
      

  6.   

    设置一个标志,让其自动return最安全.
      

  7.   

    我学到的只是 也和2楼前面想的一样  一般 不直接吧while(true)  而使 用个boolean 类型变量 这样可以方便控制
      

  8.   

    用一个变量 来结束 比如定义个变量
    public boolean Threadlife=true;
    默认为true表示线程活着
    public void run(){ 
    while(Threadlife){ 
    getSendData(); 
    try{ 
    Thread.sleep(1000); 

    catch(InterruptedException e){ 
    e.printStackTrace(); 



    当 Threadlife=false;时就结束了