gpt4 book ai didi

java - 核心java多线程-线程没有结束

转载 作者:行者123 更新时间:2023-11-30 02:24:22 25 4
gpt4 key购买 nike

使用全局变量创建了以下类。但为什么我的线程没有结束或死掉。

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;

}
}

最佳答案

你需要使你的 boolean 变量 volatile

private static volatile boolean isRequestToStop = false;

创建的线程有自己的 isRequestToStop 版本,它不会从主内存中读取/写入, volatile 将强制您的变量刷新到主内存。

查看 java 文档以获取更多信息

https://docs.oracle.com/cd/E19683-01/806-5222/codingpractices-1/index.html

关于java - 核心java多线程-线程没有结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46057657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com