为什么main线程(主线程)不能停止while死循环,而子线程(自定义)可以?多线程大神来

叫练 叫练 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
/**
* @author :jiaolian
* @date :Created in 2020-12-21 14:01
* @description:死循环不能停止线程情况
* @modified By:
*/
public class CantStopVolatile {

private static boolean notStop = true;

public static void main(String[] args) throws InterruptedException {
PrintString printString = new PrintString();
printString.printString();
printString.setNotStop(false);
}

private static class PrintString extends Thread {
//默认不停止打印;
private boolean notStop = true;

public boolean isNotStop() {
return notStop;
}

public void setNotStop(boolean notStop) {
this.notStop = notStop;
}


public void printString() {
while (notStop) {
try {
System.out.println("ThreadName:"+Thread.currentThread().getName());
//Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
}

}
}


疑问:既然主线程和子线程都是线程,按道理来说应该都是一样的,主线程也有自己的栈信息,也是私有内存,当更新notStop为false后,也会把notStop刷新到主内存,预想的程序结果不应该是死循环才对,我测试了新加一个子线程来调用printString方法,子线程是可以正常停止死循环的,也就是说会更新了notStop信息,子线程对notStop可见
...全文

相关推荐

Java多线程--让主线程等待所有子线程执行完毕

Java多线程--让主线程等待所有子线程执行完毕

lqc393260529

C++多线程断点续传下载器:从原理到实战代码实现

多线程编程是提升程序并发性能的核心技术,其原理在于通过创建多个执行流并行处理任务,充分利用多核CPU的计算能力。在文件下载等I/O密集型场景中,多线程技术能显著减少网络等待时间,提升吞吐量。结合HTTP协议的Range请求头,可以实现文件的分块下载,这是断点续传功能的技术基础。将多线程与断点续传结合,能够构建出高效、可靠的下载工具,广泛应用于各类客户端软件和分布式系统中。本文以C++后端开发为背景,通过一个完整的实战案例,详细解析了如何设计一个支持多线程并发下载与断点续传的文件下载器,涵盖了线程同步、进度持

virusswb

Unity中Task多线程编程全解析:从原理到实战避坑

游戏开发中,主线程的耗时操作往往导致画面卡顿。异步编程是优化流畅度的重要手段,而C#的Task模型相比传统Thread更安全高效。它基于线程池调度,通过async/await状态机自动管理后台执行与结果回调,在Unity中借助SynchronizationContext实现主线程安全切换。无论是资源下载、文件IO还是复杂计算,Task都能大幅简化代码。本文系统梳理Task与Thread/ThreadPool的本质区别,并深入剖析死锁、异常被吞等高频问题,帮助开发者在项目中安全落地Task多线程方案。

Vincent8080

C++多线程编程实战:从std::thread基础到线程池实现

并发编程是现代软件开发的核心技术,它通过允许多个任务同时执行,充分利用多核CPU的计算能力,从而显著提升程序性能。其基本原理是创建多个执行线程,这些线程共享进程资源但拥有独立的执行流。在C++中,std::thread作为C++11标准引入的线程管理核心,将创建和管理线程的操作标准化、可移植化,极大地降低了并发编程的门槛。这项技术的核心价值在于解决单线程程序在处理高并发请求、复杂计算或实时任务时的性能瓶颈,例如服务器处理海量连接或图形界面保持流畅响应。其典型应用场景广泛覆盖高性能计算、游戏引擎、网络服务和嵌

weixin_30824479

Python多线程:主线程等待所有子线程结束代码

主要介绍了Python多线程:主线程等待所有子线程结束代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

weixin_38577378
评论 2
收藏 已收藏
分享
返回顶部
叫练
Java SE 62,621 成员 307,251 内容