【发布时间】:2013-12-31 21:16:14
【问题描述】:
所以我有一个线程,在那个线程中我声明了一个布尔值,如下所示:
volatile boolean stopThread = false;
然后在我的线程中看起来像这样:
public void run() {
while (!stopThread) {
while (i < list.size()) {
System.out.println(list.get(i));
}
}
}
线程是这样启动的:
t1 = new CheckThread();
t2 = new CheckThread();
一切正常,但我想让用户停止线程,所以我创建了一个按钮并添加了以下两行:
t1.stopThread = true;
t2.stopThread = true;
但是当我单击按钮时,线程仍然运行。我也尝试了以下
CheckThread.stopThread = true;
但这也不起作用。 为什么我的线程没有停止?
编辑:
我这样开始我的线程。我有一个类,在任何方法之外我都有这两个变量
CheckThread t1;
CheckThread t2;
点击按钮后,我会执行以下操作
t1 = new CheckThread();
t2 = new CheckThread();
t1.start();
t2.start();
我知道线程正在运行,因为我在线程中有一个打印语句。
【问题讨论】:
-
你尝试调试了吗?
-
首先从 stopThread 声明中删除 static 关键字。那应该是一个实例变量。
-
我已经删除了 static 关键字,线程仍然没有停止。
-
显然发生了其他事情。发布你如何开始和停止你的线程。也发布实际的 while 循环。
-
你怎么知道你的线程没有停止,它在做什么?
标签: java multithreading