黑马程序员_Java基础[28]_线程3、优先级、线程组

华为OD新系统机试真题 - 失灵的键盘(C/C++/Py/Java/Js/Go) 华为OD新系统机试真题 【失灵的键盘】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD4月15号机试真题【失灵的键盘】 阅读详情
---------- android培训 、 java培训 、期待与您交流! ----------

/*
 * 停止线程
 *
 * 1、定义循环结束标记
 *         因为线程运行代码一般都是循环,只要控制了循环即可
 *             如何停止方法,
 *             原理就是,run方法结束
 *             开启多线程运行,运行代码通常都是循环结构,
 *             只要控制住循环,就可以让run结束,也就是线程结束
 * 2、使用interrupt(中断)方法
 *         该方法是结束线程的冻结状态,使线程回到运行状态
 * 注意:stop 方法已经过时,不在使用。
 *
 * 特殊情况:
 * 当线程处于了冻结状态,
 * 就不会读取到标记,那么线程就不会结束。

 *
 * 当没有指定的方式让冻结的线程恢复到运行状态时,需要对冻结进行清除
 * 强制让线程恢复到运行状态中来,这样就可以操作编辑让线程结束。
 * Thread 类中提供了该方法: interrupt();
 *
 * setDaemon();设置为守护线程(后台线程)。
 *         1、必须在启动线程前运行。
 *         2、【开启后台,前台线程一结束,后头就跟着结束】

 *
 * 【】
 * 【jion】
 *  就是让main线程释放执行权的意思,并且直到jion结束,main才能获得执行权
 * 当jion前是一个线程时,主线程会在该线程结束后取得执行权
 * 当jion前是两个以上的线程时候,主线程放弃执行权后,这两个以上的线程会相互抢夺执行权,
 *         一直到jion当前线程结束,主线程才能获取执行权,并参与与剩下的线程相互抢夺中。
 *         至于jion当前线程结束前,其他线程能否执行完毕,随机性非常强。
 *
 * 【】
 * 【 优先级】,【线程组】
 * setPriority();设置优先级
 * yield()   零时释放,遇见该方法就释放执行权
 *
 *
 * 什么时候使用线程
 * 当一个程序中,出现多个独立循环的时候,
 * 当某些代码,需要被同时执行时,就用单独的线程需要封装。

 * 看【】
 */



//【1】
class StopThread implements Runnable{
    private boolean flag=true;
    public synchronized void run(){
        while(flag){
            try{
                wait();
            }
            catch(InterruptedException e){
                System.out.println(Thread.currentThread().getName()+"....exception");
                flag=false;
            }
            System.out.println(Thread.currentThread().getName()+"....run");
        }
    }
    public void changeFlage(){
        flag=false;
    }
}
public class D_Th_clossThread {
    public static void main(String []args){
        
        StopThread st=new StopThread();
        
        //new Thread(new StopThread() ).start();

        Thread t1=new Thread(st);
        Thread t2=new Thread(st);
        t1.setDaemon(true);//设置为后台线程
        t2.setDaemon(true);

        t1.start();
        t2.start();

        int num=0;
        while(true)
        {
            if((num++) ==60){
                //st.changeFlage();
                t1.interrupt();
                t2.interrupt();

                break;
            }
            System.out.println(Thread.currentThread().getName()+"...."+num);
        }
        System.out.println("over");
    }
}
//【2】
class  Demo implements Runnable{
    public void run() {
        for(int i=0;i<70;i++){
            System.out.println(Thread.currentThread().getName()+"..."+i);
        }    
    }    
}
/*个人理解,jion 就是让main线程释放执行权的意思,并且知道jion结束,main才能获得执行权
 * 当jion前是一个线程时,主线程会在该线程结束后取得执行权
 * 当jion前是两个以上的线程时候,主线程放弃执行权后,这两个以上的线程会相互抢夺执行权,
 *         一直到jion当前线程结束,主线程才能获取执行权,并参与与剩下的线程相互抢夺中。
 *         至于jion当前线程结束前,其他线程能否执行完毕,随机性非常强。
 */
class JoinDemo{
    public static void main(String []arge)throws Exception{
        Demo d=new Demo();
        Thread t1=new Thread(d);
        Thread t2=new Thread(d);
        t1.start();
            //t1.join();
        t2.start();
        t1.join();
        for(int i=0;i<80;i++){
            System.out.println("main..."+i);
        }
        System.out.println("over");
    }
}


/* 【3】
 * 优先级,线程组,
 * setPriority();设置优先级
 * yield()   零时释放,遇见该方法就释放执行权

 */
class  Demo1 implements Runnable{
    public void run() {
        for(int i=0;i<70;i++){
            System.out.println(Thread.currentThread().getName()+"..."+i);
            Thread.yield();//零时释放,遇见该代码就释放执行权
        }    
    }

}
class JoinDemo2{
    public static void main(String []arge)throws Exception{
        Demo d=new Demo();
        Thread t1=new Thread(d);
        Thread t2=new Thread(d);
        t1.start();
        t1.setPriority(Thread.MAX_PRIORITY);//设置优先级为max
        t2.start();
        t1.join();
        for(int i=0;i<80;i++){
            System.out.println("main..."+i);
        }
        System.out.println("over");
    }
}
/*【4】
 * 设定该类中,出现3个循环,在这种情况下,是只有main一个线程,那么就能挨个运行,ps如果是超大循环。。。
 * 在这种情况下,这三个需要被同时运行的代码就可以用线程封装起来。

 */
class ThreadTest{
    public static void main(String []args){
        //[1] 匿名内部类  使用Thread调用子类把其中一个循环进行封装后,就可以达到2个线程同时运行。
        new Thread(){
            public void run(){
                for(int i=0;i<100;i++){    
                }
            }
        }.start();

        //[2] 主线程代码快
        for(int i=0;i<100;i++){    
        }
        //[3] 和[1] 用其中一种就行
        Runnable r=new Runnable(){
            public void run(){
                for(int i=0;i<100;i++){    
                }
            }
        };
        new Thread(r).start();


        //这样一封装,就能达到3个线程同时运算,达到高效。
    }
}









---------- android培训、 java培训 、期待与您交流!----------
黑马官网: http://edu.youkuaiyun.com/heima
深度强化学习在足式机器人中的应用 (一):基础原理与仿真环境 我们将首先深入探讨其背后的核心挑战与技术栈,然后详细推导机器人学和强化学习的基本数学原理,特别是剖析在机器人控制领域表现卓越的PPO算法。下面的独立Python脚本展示了Isaac Gym的基本API用法,加载一个Go1机器人(假设URDF已准备好),并让它执行一个简单的预设动作(正弦波运动),以此来熟悉仿真流程。:代码的核心是直接操作GPU上的PyTorch张量,避免了CPU和GPU之间的数据拷贝,这是实现高性能的关键。:所有计算(如伪策略中的正弦波计算)都应该是向量化的,一次性为所有。 阅读详情

相关推荐

4D毫米波雷达与激光雷达融合评测:3种主流融合框架在极端天气下的性能对比

本文深度评测了4D毫米波雷达与激光雷达在极端天气下的三大融合框架性能,包括前融合、特征级融合和后融合。通过实测数据对比,揭示了多传感器融合在暴雨、浓雾等恶劣环境中的显著优势,为自动驾驶感知系统提供了关键的技术参考和工程实践指南。

weixin_28677005的博客 331

黑马程序员-------------多线程中的(线程、线程组、线程池、以及Java的设计模式)概念及方法的总结

------- android培训、java培训、期待与您交流! ----------   多线程    一.线程的实现方式一: 1.自定义类,继承Thread 2.重写run()方法; 3.测试: 1.实例化自定义类对象; 2.调用start(); class MyThread extends Thread{ public void run(){ //代码 } } 测试

WLK98283的博客 780

黑马程序员——多线程的基础知识

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 多线程基础知识 (1)多线程:一个应用程序有多条执行路径 进程:正在执行的应用程序 线程:进程的执行单元,执行路径 单线程:一个应用程序只有一条执行路径 多线程:一个应用程序有多条执行路径 多进程的意义? 提高CPU的使用率 多线程的意义?

DoSamba的博客 696

【自动驾驶】汽车智能驾驶计算芯片

本文介绍汽车智能驾驶计算芯片的软硬件要求、 可靠性和安全性要求、 性能要求,和相应的试验方法。除了用于汽车智能驾驶, 其他领域的计算芯片可参照执行。

Mr.Cssust的博客 2631

【自然语言处理】【聚类】TELL:可解释神经聚类

超越分类的XAI:可解释神经聚类 《XAI Beyond Classification: Interpretable Neural Clustering》 论文地址:https://www.jmlr.org/papers/volume23/19-497/19-497.pdf 一、简介 ​ 本文研究了可解释AI(XAI\text{XAI}XAI)和数据聚类这两个挑战性问题。第一个问题是如何设计一种具有固定可解释性的神经网络,而不是给出一个黑盒模型的事后解释。第二个问题是,使用可微分神经网络来实现离散的k-me

bqw的博客 4137

黑马程序员_Java语言_多线程及GUI

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-25.01_多线程(多线程方法) 1.yield让出cpu 2.setPriority()设置线程的优先级 25.02_多线程(单例设计模式) 单例设计模式:保证类在内存中只有一个对象。 如何保证类在内存中只有一个对象呢?(1)控制类的创建,不让其他类来创建本类的对象。private (2)在本类中定义一个本类的对

jiao142857的博客 561

如何用YOLOv5改进无人机小目标检测?MFFSODNet实战教程(附代码)

本文详细介绍了如何利用YOLOv5框架结合MFFSODNet网络结构优化无人机航拍图像中的小目标检测。通过引入微小目标预测头、多尺度特征提取模块(MSFEM)和双向密集特征金字塔网络(BDFPN)等核心技术,显著提升了小目标检测精度。文章提供了完整的代码实现方案,并展示了在农业监测、电力巡检等实际场景中的应用效果。

sre5engineer的博客 738

黑马程序员线程

------- android培训、java培训、期待与您交流! ---------- 黑马程序员线程 Java中如果我们自己没有产生线程,那么系统就会给我们产生一个线程(主线程,main方法就在主线程上运行),我们的程序都是由线程来执行的。进程:执行中的程序(程序是静态的概念,进程动态的概念)。 当程序启动运行时,就自动产生一个线程,主方法main就在这个主线程上运行。一个进程可以包含

lamstudyingnet的专栏 439

强化学习(Q-learning、DQN) —— 理论、案例与交互式 GUI 实现

本文详细介绍了强化学习中基于值函数的 Q-learning 算法及深度强化学习的 DQN 方法,从基本理论、数学模型到算法流程均进行了全面阐述。通过迷宫导航、股票交易策略和机器人控制等典型案例,展示了强化学习在处理高维、非线性和时变问题中的强大适应性。为了帮助工程师和研究者更直观地理解强化学习的训练过程,本文还提供了一份基于 Python 与 PyQt6 实现的交互式 GUI 演示系统代码示例,用户可以在线调整参数,实时观察累计奖励和 Q 值的变化,从而更深入地理解算法收敛和策略演化的过程。

闲人编程的博客 1475

c#视觉应用开发中如何使用Emgu CV在C#中进行图像处理?

Emgu CV 是 OpenCV 的 .NET 包装器,可以让开发者在 .NET 语言(如 C#)中使用 OpenCV 的功能进行图像处理。在进行图像处理时,Emgu CV 提供了丰富的 API 可以使用。PictureBoxImageBox下面是一个详细的示例,演示如何使用 Emgu CV 在 C# 中进行基本的图像处理,包括加载图像、转换为灰度图像、进行边缘检测,然后显示结果。byte在这个示例中,我们使用了三个PictureBox控件来显示原始图像、灰度图像和边缘检测后的图像。

zhangzhechun的专栏 667

黑马程序员——java语言基础——线程学习笔记二

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 线程: 守护线程特点: 优先级非常低,通常在程序里没有其他线程运行时才会执行它;当守护线程是程序里唯一在运行的线程时,JVM会结束守护线程并终止程序; 说明:守护线程通常用于在同一程序里给普通线程(也叫用户线程)提供服务,它们可能随时被终止。JAVA中最典型的这种

sandy_lu的博客 564

使用MATLAB结合EasySpin进行ESR模拟的详细步骤及示例代码

安装EasySpin:确保你已经安装了EasySpin工具箱,它可以帮助你进行ESR模拟。你可以从EasySpin的官方网站(https://easyspin.org/)下载并安装。准备实验数据:将实验得到的EPR数据整理成合适的格式,一般包含磁场(Magnetic Field)和信号强度(Intensity)两列。进行模拟:使用EasySpin的函数对单线态氧自由基和超氧自由基进行模拟。调整参数:通过调整模拟参数,使模拟得到的峰型和峰位置与实验数据尽可能匹配。导出数据。

AI的内部世界的博客 2005

【黑马程序员】多线程,设计模式——Java复习笔记

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-多线程(1)多线程:一个应用程序有多条执行路径 进程:正在执行的应用程序 线程:进程的执行单元,执行路径 单线程:一个应用程序只有一条执行路径 多线程:一个应用程序有多条执行路径 多进程的意义? 提高CPU的使用率 多线程的意义? 提高应用

u014461902的博客 514

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

黑马程序员之---多线程

------- android培训、java培训、期待与您交流! ---------- Thread: 线程:   进程:正在运行的应用程序 线程:进程中的一条执行路径   单线程: 应用程序只有一条执行路径 多线程: 应用程序有多条执行路径   创建线程对象的三种方式: 方式1: 继承Thread a: 自定义类 继承 Thread b: 重新Thread类中的r

君北羽 520

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

黑马程序员--Java学习日记之总结复习(多线程和设计模式)

一.线程实现方式:  1.继承Thread类;  2.实现Runnable接口; 二.设置获取线程的名称:  getName()和setName(String name); 三.设置获取线程的优先级:  getPriority()和setPriority(int n);  线程的优先级范围:1--10(从低到高) 四.线程的休眠:sleep(long m):休眠到指定的m毫

Memor_的博客 851

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

黑马程序员_java语言_多线程和设计模式

------http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训a>、期待与您交流! ------- ###17.01_多线程(多线程方法) 方法的介绍:   唤醒线程对象的方法: public final void notifyAll()    唤醒在此对象监视器(锁对象)上等待的所有线程。

sjw798056265的博客 574

黑马程序员_java基础复习五多线程

---------android培训、java培训、期待与您交流! --------- 线程的概念和原理 为什么使用多线程? 为了更高效的完成任务和利用CPU资源,现在的操作系统设计为多任务操作系统,而多进程和多线程是实现多任务的方式。 什么是进程和线程? 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。进程是

jkl123357741的专栏 512

黑马程序员---Java基础---多线程

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------  一、进程和线程的概述 1、进程: 进程:它是"操作系统"中的概念;对于操作系统来说,每个单独运行的"程序"就是一个"进程"; 多进程:是指操作系统可以同时维护多个应用程序的同时运行;统一分配资源; 多进程的意义: 1).充分的利用系统

xu130130的博客 354

黑马程序员_多线程

------- android培训、java培训、期待与您交流! ----------    多线程   创建线程方式一 继承Thread类 1.子类覆盖父类中的run方法,将线程运行的代码存放在run中。 2.建立子类对象的同时线程也被创建。 3.通过调用start方法开启线程。    创建线程方式二 实现Runnable接口 1.子类覆盖接口中的ru

jjjook的专栏 185

黑马程序员——多线程

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流!——  一、概述   多线程就是一个应用程序有多条执行路径   1.进程与线程 1)进程: 正在运行的程序,是系统进行资源分配和调用的独立单位。 每一个进程都有它自己的内存空间和系统资源。 2)线程: 是进程中的单个顺序控制流,是一条执行路径。 一个进程如果只有一条执行路径,则称为单线程程序。 ,

cui_wei_guo的博客 317

黑马程序员_java基础二(线程和集合)

线程 线程:一个正在执行的程序。 多线程存在的意义

u011109723的专栏 594

黑马程序员-多线程学习笔记

------- android培训、java培训、期待与您交流! ---------- ----------------------------------------线程的概念---------------------------------------- 线程的概念:   1.我们之前的程序都是"单线程"程序:代码一行一行执行,后面的代码总要等到前面的代码执行完毕,才能获

dotedy的博客 414

黑马程序员--多线程

----------- ----------- ASP.Net+Android+IOS开发、----------- .Net培训、期待与您交流!">----------- ----------- 黑马程序员――多线程 一、    线程的定义   1.  进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元.线程:就是进程中的一个独立的控制单

u012486389的专栏 610

黑马程序员_多线程和String类

------------- android培训、java培训、java博客、java学习型技术博客、期待与您交流! ------------- 多线程 进程与线程 进程是程序的一次动态执行过程,它经历了代码加载、执行到执行完毕整个过程, 运行一个程序,就会启动一个进程,这时操作系统会为进程分配资源,最主要资源即内存空间; 多进程操作系统指能同时运行多个进程(

Afree_Yan 816

黑马程序员-多线程3

  ---------------------- android培训、java培训、期待与您交流! ----------------------     多线程3   线程停止:   stop方法已经过时。如何停止线程? 只有一种,run方法结束。 开启多线程运行,运行代码通常是循环结构。   只要控制住循环,就可以让run方法结束,也就是线程结束。     特殊情...

iteye_15972的博客 129
上一篇: 黑马程序员_Java基础[27]_静态同步函数
下一篇: 黑马程序员_Java基础[29]_线程间通讯、解决问题、lock
Hnotify
博客等级 码龄13年 3粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值