首先,您不在这里启动任何线程!您应该创建一个新线程并将混乱的名称传递
thread1
Runnable给它:
thread1 t1 = new thread1();final Thread thread = new Thread(t1);thread.start();
现在,当您真正拥有线程时,有一个内置功能可以中断正在运行的线程,称为…
interrupt():
thread.interrupt();
但是,仅设置此标志无效,您必须在运行的线程中进行处理:
while(!Thread.currentThread().isInterrupted()){ try{ Thread.sleep(10); } catch(InterruptedException e){ Thread.currentThread().interrupt(); break; //optional, since the while loop conditional should detect the interrupted state } catch(Exception e){ e.printStackTrace(); }
需要注意的两件事:
while循环现在在thread时结束
isInterrupted()。但是,如果线程在睡眠期间被中断,那么JVM会非常友好,它会抛出
InterruptedExceptionout来通知您
sleep()。抓住它,打破循环。而已!
至于其他建议:
- 关于Thread.stop():
不推荐使用 。这种方法本质上是不安全的[…]
- 添加您自己的标志并留意它是可以的(请记住要使用
AtomicBoolean
或volatile
!),但是如果JDK已经为您提供了这样的内置标志,为什么还要麻烦呢?额外的好处是可以中断sleep
s,使线程中断的响应速度更快。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)