java 进阶 1.0.3

news2025/7/13 6:38:20

Thread API说明
自己滚去看文档
CPU线程调度
每一个线程的优先使用权都是系统随机分配的,人人平等
谁先分配到就谁先用
也可以耍赖,就是赋予某一个线程拥有之高使用权:优先级
这样的操作就叫做线程调度
最基本的是系统轮流获得
java的做法是抢占CPU资源
优先级在java中是1-10,数字最大优先级越高
main()也是一个线程,被叫做主线程,他的值是5
main是优先执行的main,就是好像把别人的值设置的很大的时候也是先跑的main
但是有时候会发现自己设置的好像不管用,这是因为这里优先级的设置需要操作系统的支持,系统不一样有可能导致不准,因为执行的很快
所以以后在做多线程的时候,不要依赖多线程调度,除非是你这个线程执行的时间很长的时候,这个时候才能体会出一点多线程调度的样子,因为CPU执行的非常快,虽然你把优先级分好了,但是好像没啥卵用

public class Demo {
    public static void main(String[] args) {
        Thread maxPriority = new Thread(new MAXPriority(), "maxPriority");
        Thread minPriority = new Thread(new MINPriority(), "minPriority");
        maxPriority.setPriority(Thread.MIN_PRIORITY);
        minPriority.setPriority(Thread.MAX_PRIORITY);
        maxPriority.start();
        minPriority.start();
    }
}

运行结果确实没啥卵用


线程插队

public class Demo {
    public static void main(String[] args) {
        Thread thread_join = new Thread(new MAXPriority(), "MAXPriority");
        thread_join.start();

        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName());
            if (i == 3) {
                try {
                    thread_join.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

在这里插入图片描述
使用join可以实现无耻的插队
线程休眠

try {
                Thread.sleep(300);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

线程休眠, 让线程先睡一会再说
线程让步
有一种抢地主的感觉,说啥呢,这叫孔融让梨

public class MAXPriority implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            if (i == 5) {
                Thread.yield();
                System.out.println(Thread.currentThread().getName() + "现在开始线程让步");
            }
            System.out.println(Thread.currentThread().getName());
        }
    }
}

在这里插入图片描述
可以看到1执行了5次之后就开始执行2
打印没有让步快
因为线程太快了
线程状态还是斗地主吧
线程状态
New新建 -----> new Thread
Runbale可运行 --------> .start
Blocked阻塞
Waiting 等待
Timed waiting计时等待
Terminated终止

在这里插入图片描述
线程通信
线程调度高度依赖于操作系统
在这里插入图片描述
在任务管理器中可以设置进程的优先级
在线程调度中,一个线程结束之后需要通知另外两个线程,来告诉他我结束了,你上吧
有一个等待唤醒机制
无非就是谁等待谁被唤醒

package com.google.dome;

public class Condom {
    public boolean isStatus = false;
}
package com.google.dome;

public class Customer extends Thread {
    private Condom condom;

    public Customer(Condom condom) {
        this.condom = condom;
    }

    @Override
    public void run() {
        while (true) {
            synchronized (condom) {
                // 是否拥有库存,如果没有就打电话给厂商,我们等
                if (condom.isStatus == false) {
                    try {
                        condom.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName() + "我买完了快点生产");
                }

                condom.isStatus = false;

                System.out.println(Thread.currentThread().getName() + "我买完了,你快点生产,我通知你了");

                condom.notify();
            }
        }
    }
}

package com.google.dome;

public class Producer extends Thread {
    private Condom condom;

    public Producer(Condom condom) {
        this.condom = condom;
    }

    @Override
    public void run() {
        while (true) {
            // 对商家来说是是否有货,如果有货的话就等着
            synchronized (condom) {
                if (condom.isStatus == true) {
                    try {
                        condom.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                condom.isStatus = true;

                System.out.println(Thread.currentThread().getName() + "我生产完了,你快点买,我通知你了");

                condom.notify();
            }
        }
    }
}

使用condom.wait进行线程等待并且condom.notify通知其他的线程
在这里插入图片描述
在这里插入图片描述
锁的对象为什么能使用.wait.notify呢?好奇怪
如果有多个线程的话,就可以唤醒所有的线程.notifyAll
frank竟然不打算往下讲, 这些就属于是并发编程的事了
说是什么点到为止
进程
java中提供了方法去操作进程,了解一下就行
这个已经涉及到很底层的东西,frank说不能再讲了,因为就越来越复杂了,现在的知识点还是有限的
这样做就需要用到泛型编程,这个泛型编程到底是个啥东西
大公司的并发操作有时候使用的是go
对于新手而言已经是超乎极限了
有一本书叫做java并发编程的艺术
java核心技术
你要是会这个肯定是优势,但是实习生不怎么要求这个
但是牛逼的实习生肯定得会
得写框架,写好算法就是基础任务
想进大厂就得多会一点
现在不要把这个放在重点上面,否则的话肯定会浪费很多时间
不要把时间浪费在无关的事情上面






micro_frank

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2384493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从 Docker 到 runC

从 Docker 到 runC:容器底层原理详解 目录 1. Docker 与 runC 的关系 2. Docker 的核心组件 3. runC 的核心功能 4. 实战示例:从 Docker 到 runC 4.1 示例场景:运行一个简单容器 4.2 Docker 底层调用 runC 的流程 4.3 查看 runC 的调用 4.4 直接调用 runC 创建容器 …

PET,Prompt Tuning,P Tuning,Lora,Qlora 大模型微调的简介

概览 到2025年&#xff0c;虽然PET&#xff08;Pattern-Exploiting Training&#xff09;和Prompt Tuning在学术界仍有探讨&#xff0c;但在工业和生产环境中它们已基本被LoRA/QLoRA等参数高效微调&#xff08;PEFT&#xff09;方法取代 。LoRA因其实现简单、推理零开销&#…

02-jenkins学习之旅-基础配置

0 配置主路径 jenkins安装目录下找到jenkins.xml文件&#xff0c;C:\ProgramData\Jenkins\.jenkins目录下会存放jenkins相关的配置信息。 1 jdk配置 jenkins是java开发开源的项目&#xff0c;进而服务器需要jdk环境 1.1 服务器安装jdk 1.2 jenkins jdk配置 2 git配置 在je…

Appium+python自动化(三)- SDK Manager

简介 一开始打算用真机做的&#xff0c;所以在前边搭建环境时候就没有下载SDK&#xff0c;但是考虑到绝大多数人都没有真机&#xff0c;所以顺应民意整理一下模拟器。SDK顾名思义&#xff0c;Android SDK Manager就是一个Android软件开发工具包管理器&#xff0c;就像一个桥梁&…

3D Gaussian Splatting for Real-Time Radiance Field Rendering——文章方法精解

SfM → Point-NeRF → 3D Gaussian Splatting &#x1f7e6;SfM Structure-from-Motion&#xff08;运动恢复结构&#xff0c;简称 SfM&#xff09;是一种计算机视觉技术&#xff0c;可以&#xff1a; 利用多张从不同角度拍摄的图像&#xff0c;恢复出场景的三维结构和相机的…

【Unity实战笔记】第二十四 · 使用 SMB+Animator 实现基础战斗系统

转载请注明出处&#xff1a;&#x1f517;https://blog.csdn.net/weixin_44013533/article/details/146409453 作者&#xff1a;CSDN|Ringleader| 1 结构 1.1 状态机 1.2 SMB 2 代码实现 2.1 核心控制 Player_Base_SMB 继承 StateMachineBehaviour &#xff0c;控制变量初始…

【Java高阶面经:消息队列篇】22、消息队列核心应用:高并发场景下的解耦、异步与削峰

一、消息队列:分布式系统的核心枢纽 在分布式架构日益普及的今天,消息队列(Message Queue, MQ)已成为解决系统复杂性的核心组件。它通过异步通信、系统解耦和流量控制等能力,有效应对高并发场景下的数据流动挑战。 1.1 核心特性:异步、解耦与弹性 1.1.1 异步通信:释放…

软媒魔方——一款集合多种系统辅助组件的软件

停更4年&#xff0c;但依旧吊炸天&#xff01; 亲们&#xff0c;是不是觉得电脑用久了就像老牛拉车&#xff0c;慢得让人着急&#xff1f;别急&#xff0c;我今天要给大家安利一个超好用的电脑优化神器——软媒魔方&#xff01; 软件介绍 首先&#xff0c;这货真心是免费的&a…

多路径可靠传输协议(比如 MPTCP)为什么低效

可靠就不能多路径&#xff0c;多路径求可靠必然要多费劲。这不难理解&#xff0c;多路径必异步&#xff0c;这无疑增加了可靠性判断的难度。 前文 多路径传输(比如 MPTCP)对性能的意义 阐述了作为单连接的多子流 MPTCP 对传输性能的意义是无意义&#xff0c;本文接着阐述作为隧…

塔能高温冰蓄冷技术:工厂能耗精准节能的创新之路

在工厂的能耗构成中&#xff0c;制冷系统是重要的耗能环节。传统的水蓄冷和冰蓄冷技术在实际应用中存在一些局限性&#xff0c;难以满足工厂对节能和成本控制的更高要求。塔能科技的高温冰蓄冷技术&#xff0c;凭借其独特的优势&#xff0c;为工厂能耗精准节能提供了创新的解决…

内存优化笔记1

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 问题提出 在很多工业软件中&#xff0c;需要对对象进行微分细化&#xff0c;这样会产生很多&#xff08;几百万到几千万&#xff09;对象。随着业务的发展&#xff0c…

人脸识别,使用 deepface + api + flask, 改写 + 调试

1. 起因&#xff0c; 目的&#xff0c; 感受: github deepface 这个项目写的很好&#xff0c; 继续研究使用这个项目&#xff0c;改写 api。增加一个前端 flask app 2. 先看效果 3. 过程: 大力改写原始项目中 api 这部分的代码&#xff0c; 原始项目的文件结构太繁杂了: 我把…

代码管理平台Gitlab如何通过快解析实现远程访问?

一、Gitlab功能介绍 Gitlab是被广泛使用的基于git的开源代码管理平台&#xff0c;用于管理、存储开发人员代码&#xff0c;同时可以协同开发 二、外网试用Gitlab遇到的问题 运维人员将Gitlab服务器部署在总部机房&#xff0c;而分公司开发人员和出差运维人员就无法访问Gitlab…

基于SpringBoot+Vue的足球青训俱乐部管理后台系统的设计与开发

项目背景与概述 随着足球青训行业的快速发展&#xff0c;如何高效、规范地管理学员、教练以及课程等日常工作&#xff0c;成为了青训俱乐部运营的重要课题。为了提升俱乐部的管理效率与用户体验&#xff0c;基于 Spring Boot 和 Vue.js 开发了一个 足球青训俱乐部管理后台系统…

线程调度与单例模式:wait、notify与懒汉模式解析

一.wait 和 notify&#xff08;等待 和 通知&#xff09; 引入 wait notify 就是为了能够从应用层面&#xff0c;干预到多个不同线程代码的执行顺序&#xff0c;可以让后执行的线程主动放弃被调度的机会&#xff0c;等先执行的线程完成后通知放弃调度的线程重新执行。 自助取…

MySQL中TCP和套接字SSL加密连接行为分析

目录 一、前言 二、背景 三、参数介绍 3.1、 have_openssl 3.2、have_ssl 3.3、require_secure_transport 四、--ssl-modemode 五、CREATE USER SSL/TLS选项 六、问题验证 6.1、使用套接字连接 6.2、使用TCP连接 七、分析与总结 一、前言 SSL&#xff08;Secure S…

php本地 curl 请求证书问题解决

错误: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for 解决方案 在php目录下创建证书文件夹, 执行下面生成命令, 然后在php.ini 文件中配置证书路径; 重启环境 curl --eta…

爱普生晶振赋能UWB汽车数字钥匙,解锁未来出行新方式

随着科技的发展&#xff0c;尤其是国产新能源汽车的崛起&#xff0c;相信大家对数字钥匙的概念已经不陌生了&#xff0c;通过手机、智能穿戴实现对汽车的多功能控制已经是很多汽车的标配。但是目前数字钥匙也有一定的局限性&#xff0c;比如定位不准、安全性不强等等&#xff0…

电子电路:深入理解电磁耦合的定义与应用

电场和磁场是独立存在的吗&#xff1f;&#xff0c;但实际上根据麦克斯韦理论&#xff0c;它们是同一现象的两个方面&#xff0c;通过变化相互产生。这时候需要强调时变场的重要性&#xff0c;以及静态场和动态场的区别。 通过电磁波的概念&#xff0c;说明电磁耦合如何导致电…

宝塔安装的 MySQL 无法连接的情况及解决方案

宝塔安装的 MySQL 无法连接的情况及解决方案 宝塔面板是一款流行的服务器管理工具&#xff0c;其中集成的 MySQL 数据库有时会出现连接问题。本文详细介绍两种最常见的 MySQL 连接错误&#xff1a;“1130 - Host is not allowed to connect” 和 “1045 - Access denied”&…