繁体   English   中英

两次调用时杀死线程

[英]Kill thread when it called twice

我制作了将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在主线程上。

首先从method替换您的工作线程。 比:

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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM