核心java多线程 - 线程没有结束[重复]
Posted
技术标签:
【中文标题】核心java多线程 - 线程没有结束[重复]【英文标题】:Core java Multi Threading - Thread is not Ending [duplicate] 【发布时间】:2018-02-13 21:47:39 【问题描述】:已经用全局变量创建了下面的类。 但是为什么我的线程没有结束或死亡。
public class MTTest
private static boolean isRequestToStop = false;
public static void main(String [] args) throws Exception
Thread T = new Thread (new Runnable()
public void run()
while(!getRequestToStop())
//System.out.println(" Value is " +getRequestToStop() );
//System.out.println("Thread");
);
T.start();
Thread.sleep(1000);
setRequestToStop();
//isRequestToStop = true;
public static void setRequestToStop()
System.out.println("--- setRequestToStop()--- Called");
isRequestToStop = true;
public static boolean getRequestToStop()
return isRequestToStop;
【问题讨论】:
【参考方案1】:你需要让你的布尔变量可变
private static volatile boolean isRequestToStop = false;
创建的线程有自己的 isRequestToStop 版本,不会从主内存读取/写入,volatile 会强制将变量刷新到主内存。
查看 java 文档了解更多信息
https://docs.oracle.com/cd/E19683-01/806-5222/codingpractices-1/index.html
【讨论】:
以上是关于核心java多线程 - 线程没有结束[重复]的主要内容,如果未能解决你的问题,请参考以下文章