在线程调用两次时杀死线程

时间:2016-07-11 14:09:30

标签: java android multithreading

我做了一个线程,定期将String发送回主线程。 我把这个帖子放在某个功能上。

当我按下某个按钮时,将调用函数并完成工作。

问题是当我按下该按钮两次时。

两个线程正在将其String发送到主线程。 (他们完全一样,但不同的字符串。)

但是当线程再次启动时,我不需要第一个线程。

他们以任何方式杀死第一个线程吗?

这里是代码。

private void speller_textbox(final String string){
    final int strlen = string.length();
    Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            int cursor= 0;
            while(cursor != strlen){
                try{
                    Message message = Message.obtain();
                    message.obj = string.subSequence(0,cursor);
                    txt_handler.sendMessage(message);
                    cursor++;
                    Thread.sleep(100);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
    });
    thread.start();
}

txt_handler在主线程上。

1 个答案:

答案 0 :(得分:-1)

首先从方法中替换您的工作线程。比:

private Thread workingThread;

//.....

private void speller_textbox(final String string){

    if (workingThread != null && workingThread.isAlive()) {
        workingThread.interrupt();
    }

    final int strlen = string.length();
    workingThread = new Thread(new Runnable() {
        @Override
        public void run() {
            int cursor= 0;
            while(cursor != strlen){
                try{
                    Message message = Message.obtain();
                    message.obj = string.subSequence(0,cursor);
                    txt_handler.sendMessage(message);
                    cursor++;
                    Thread.sleep(100);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
    });
    thread.start();
}