学习JavaEE的日子 Day29 yield,join,线程的中断,守护线程,线程局部变量共享,线程生命周期,JavaEE学习笔记 Day 29,线程管理进阶,理解yield、join、中断、守护线程与线程局部变量共享及生命周期,JavaEE学习笔记 Day 29,线程管理进阶,深入理解yield、join、中断、守护线程、线程局部变量共享及生命周期

马肤

温馨提示:这篇文章已超过411天没有更新,请注意相关的内容是否还可用!

摘要:在JavaEE学习的第29天,我深入理解了线程管理的进阶知识。包括yield方法的谦让机制,join方法实现线程同步,线程的中断机制,守护线程的概念及其在后台执行的任务特点,线程局部变量共享机制以及线程生命周期的管理。这些知识点对于理解JavaEE中的多线程编程至关重要,我在学习笔记中详细记录了这些内容。

Day 29: 多线程深入探索

线程的礼让

理解:Thread.yield()是一个静态方法,它使当前线程暂时放弃CPU资源,回到就绪状态,等待再次获取CPU资源,这可以视为线程的礼让,即允许其他线程运行。

实验:创建两个线程,线程A和线程B,线程B每次打印数字后都会礼让一次,观察实验结果,可以看到线程调度的不确定性。

代码示例:

public class Test01 {
    public static void main(String[] args) {
        ThreadA a = new ThreadA(); // ThreadA继承自Thread类
        ThreadB b = new ThreadB(); // ThreadB继承自Thread类
        a.start(); // 启动线程A
        b.start(); // 启动线程B,每次打印后礼让一次
    }
}

ThreadA类的实现

ThreadA类继承自Thread类,重写run方法定义线程行为,循环打印数字1到100。

代码示例:

public class ThreadA extends Thread {
    @Override
    public void run() {
        for (int i = 1; i <= 100; i++) {
            System.out.println("A:" + i);
        }
        // 定义结束循环后可能需要的额外操作等逻辑可以在这里添加,等待其他线程完成等。
    }
}

ThreadB类的实现(部分)

ThreadB类也继承自Thread类,在run方法中实现打印数字和礼让逻辑,每次打印后调用Thread.yield()方法实现礼让功能,具体实现细节可以根据实际需求进行调整和优化。

多线程编程中的其他主题

1、中断线程:使用interrupt()方法中断一个线程时,需要在目标线程内部检查中断状态并执行相应的逻辑处理中断请求,可以使用isInterrupted()方法检查线程是否被中断。

2、守护线程:通过调用setDaemon(true)将线程设置为守护线程,守护线程在后台运行,当所有前台线程结束时自动结束。

3、ThreadLocal:用于实现线程局部变量存储的类,每个线程都有自己的ThreadLocalMap对象存储局部变量数据,不同线程之间不会共享这些数据。

4、并发编程中的其他概念和技术:包括锁、同步、并发集合、原子变量等,这些技术有助于处理并发编程中的同步和性能问题。

5、注意事项:在实际应用中,需要根据具体需求和场景选择合适的并发编程技术和工具,关注代码的可读性和可维护性,遵循良好的编程规范和最佳实践。

6、并发编程的挑战:除了掌握多线程编程技巧外,还需要关注并发编程中的安全性和稳定性问题,以确保程序的正确运行和可靠性。

7、并发编程的扩展性:在实际应用中,需要考虑程序的并发性和可扩展性,以应对高并发场景下的性能和稳定性挑战。

多线程编程是一个需要不断学习和实践的领域,通过不断学习和实践,您将能够掌握其中的技巧和方法,提高编程能力和水平,更好地应对并发编程中的挑战和问题,实现高效稳定的并发编程解决方案。


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码