微信网站模板源码下载在网上做贸易哪个网站好

web/2025/9/26 21:53:50/文章来源:
微信网站模板源码下载,在网上做贸易哪个网站好,求人做网站,有哪些做特卖的网站线程的概念 前言#xff1a; 一个程序运行起来#xff0c;就会对应一个进程#xff0c;例如#xff0c;启动一个 Java 程序#xff0c;就会创建一个 Java 进程。进程也被称为系统分配资源的基本单位。 一个进程可以包含一个线程#xff0c;也可以包含多个线程#xff…线程的概念 前言 一个程序运行起来就会对应一个进程例如启动一个 Java 程序就会创建一个 Java 进程。进程也被称为系统分配资源的基本单位。 一个进程可以包含一个线程也可以包含多个线程不能包含0个线程线程是系统调度执行的基本单位也被称为轻量级(Lignt Weight Process) 创建线程 关于线程的创建各位亲们请详见博主的另一篇博客《Java 中创建线程(Thread)的五种方法》 使用多线程的原因 主要原因 单核CPU的发展遇到了瓶颈要想提高算力就需要多核CPU而并发编程能更充分利用多核CPU资源将计算逻辑分配到多个处理器核心上显著减少程序的运行时间并且随着更多处理器核心的加入而变得更加高效有些任务场景需要等待IO为了让等待IO的时间能够去做一些其他的工作也需要用到并发编程。 理解 就比如一些复杂的业务逻辑当你在京东App上购物时你购买一个东西时就涉及到了一笔订单的创建插入订单数据生成订单快照发送邮件通知卖家和记录货品销售数量等。作为用户的你从确认订购开始就要等待上述的操作全部完成才能看到订购成功的结果。 解决 使用多线程技术将比如生成订单快照发送邮件等数据一致性不强的操作派发给其它的线程就可以显著缩短响应时间从而提示用户购物体验 次要原因 虽然多进程也能实现并发编程但是线程比进程更轻量同一个进程的线程之间共享了资源 ( 内存文件描述符表等)    体现如下    1.创建线程比创建进程更快    2.销毁线程比销毁进程更快    3.调度线程比调度进程更快 进程的状态 Java 线程的状态 状态名称说明NEWThread 对象有了但还没调用 start()系统内部的线程还未创建RUNNABLE就绪状态指的是这个线程“随叫随到”以下 2 种情况1. 这个线程正在 CPU 执行2. 这个线程虽然没在 CPU 执行但是随时可以调度到 CPU 上执行TERMINATED线程已经终止了内核中的线程已经销毁了但是 Thread 对象还在WAITING阻塞死等进入的阻塞TIMED_WAITING阻塞在进行带有超时时间的等待BLOCKED阻塞进行锁竞争的时候产生的阻塞 注只要线程出现WAITINGTIMED_WAITING BLOCKED 中的任意一个状态都是阻塞只是产生这几个状态的原因不一样 作图理解 启动线程 线程对象在初始化完成之后调用 start() 方法就可以启动。 线程 start() 方法的含义是当前线程同步告知 Java 虚拟机只要线程规划器空闲应立即启动调用 start() 方法的线程。 调用 start 方法才真的在操作系统的底层创建出一个线程 中断/终止线程 中断可以理解为线程的一个标识位属性它表示一个运行中的线程是否被其他线程进行了中断操作。 终止线程在Java中 都只是提醒,建议真正要不要终止还得线程本体来进行决定的!! t 线程正在执行其他线程只能提醒一下t是不是要终止了t 收到这样的提醒之后也还是得自己决定的。终止就好比其他线程对该线程打了一个招呼 停止线程的常见方式有以下2种 通过共享的标记来进行沟通调用 interrupt() 方法来通知 示例1: 使用自定义的变量来作为标志位 核心思路让需要终止的线程的入口方法尽快执行结束(跳出循环,还是尽快return都可以) 代码示例 package Thread;/*** Created with IntelliJ IDEA.* Description:* User: fly(逐梦者)* Date: 2024-03-29* Time: 10:44*/ public class Demo10 {private static boolean isRunning true;public static void main(String[] args) {Thread t new Thread(()- {while (isRunning){System.out.println(hello thread);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}System.out.println(t 线程已经结束了);});t.start();try {Thread.sleep(3000);} catch (InterruptedException e) {throw new RuntimeException(e);}// 3s 之后主线程修改 isRunning 的值从而通知 t 结束System.out.println(控制 t 线程结束);isRunning false;} }这里的isRunning不能设置为局部变量只能设置为静态成员变量 原因 涉及到变量捕获作为lambda或者匿名内部类都能捕获到外面一层作用域中的变量名就可以使用的。 但是变量捕获有一个前置条件就是要求变量得是final(常量)或者“事实 finalisRunning变量涉及到修改操作变量捕获失败javac 无法编译通过编译器会给你爆红提示报错 设置为静态成员变量就不是变量捕获了而是内部类访问外部类的成员此时 lambda 本质上就是一个匿名内部类实现了函数式接口 上述代码的缺点 有些情况下main 线程是无法及时把 t 线程终止掉 代码运行结果 示例2: 使用 Thread.interrupted() 代替自定 义标志位 刚才是定义了一个boolean变量实际上Thread 里面内置了一个使用内置的标志位功能要更强大 代码示例 package Thread;/*** Created with IntelliJ IDEA.* Description:* User: fly(逐梦者)* Date: 2024-03-29* Time: 11:19*/ public class Demo11 {public static void main(String[] args) {Thread t new Thread(() - {while (!Thread.currentThread().isInterrupted()) {System.out.println(hello thread);try {Thread.sleep(1000);} catch (InterruptedException e) { // throw new RuntimeException(e);e.printStackTrace();}}});t.start();try {Thread.sleep(3000);} catch (InterruptedException e) {throw new RuntimeException(e);}t.interrupt();} } Thread.currentThread() 是个static方法这个方法能够获取到当前线程可以能够获取到 t 这个引用 isInterrupted() 线程内置的标志位boolean 类型变量true 表示线程要终止了false表示线程要继续执行 t.interrupt() 这个方法相当于示例1的设置 boolean 值为 true并且除了能设置boolean值还可以唤醒 sleep等阻塞的方法。即使正在sleep(10s)刚休眠1s按照示例1/第一种写法必须再等待9s才能让线程结束(sleep结束了,才能继续进行循环判定); 示例2/第二种写法则立即就会让 sleep抛出一个InterruptedException异常不会再等待立即就唤醒了 当使用 Interrupt 方法之后此时要不要结束都是t线程自己决定的!!! 代码运行结果 现象 sleep 在抛出异常后没有立即终止而是继续循环打印。 原因 出现这个现象,还是 sleep在搞鬼 如果代码没有sleep确实是直接修改了标志位就完了 如果有 sleep,并且是触发 Interrupt 的时候线程正在 sleepsleep 被唤醒的同时就会清除刚才的标志位(又改回false ) 之所以要改回来就是把控制权转交给作为程序员的我们. 如果想立即结束直接在 catch 语句中加个break, 即可。至于稍后结束还是不想结束稍微修改下代码就行了 相关代码 Thread t new Thread(() - {while (!Thread.currentThread().isInterrupted()) {System.out.println(hello thread);try {Thread.sleep(1000);} catch (InterruptedException e) { // throw new RuntimeException(e); // e.printStackTrace();break;}}});t.start();运行结果 线程等待 存在问题的代码 public static void main(String[] args) {Thread t new Thread(()-{System.out.println(hello thread);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}});t.start();for (int i 0; i 3; i) {System.out.println(hello main);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}System.out.println(main end); }运行结果 分析原因 根本原因 多个线程在系统中的调度顺序是无序的(抢占式执行)作为程序猿的我们期望程序的结果是稳定的不应该是随机的 希望在随机的体系上加入一些控制让结果变的不那么随机 问题 多个线程什么时候被调度执行不确定 多个线程谁先执行结束不确定 解决 通过线程等待(join)来确定线程结束的先后顺序 join 相关函数 函数返回值方法及其作用个人理解voidjoin()Waits for this thread to die.这个join无参数版本 (很少使用)死等不见不散只要 t 不结束join 就会一直等待下去voidjoin(long millis)Waits at most millis milliseconds for this thread to die.常用等待 N 毫秒 比如写了等待10ms如果10ms之内, t 线程结束了直接返回如果10ms 到了t 还没结束不等了代码继续往下执行了voidjoin(long millis, int nanos)Waits at most millis milliseconds plus nanos nanoseconds for this thread to die.等待 N 毫秒 又 M 纳秒 (几乎不用) 具体实现 由于上述代码中 main 和 t 线程之间的结束顺序是不确定的如果希望让代码里面的t能够先结束, main后结束,就可以在main 中使用线程等待(join) 代码如下 package Thread;/*** Created with IntelliJ IDEA.* Description:* User: fly(逐梦者)* Date: 2024-03-30* Time: 2:06*/ public class Demo12 {public static void main(String[] args) throws InterruptedException {Thread t new Thread(() - {for (int i 0; i 3; i) {System.out.println(hello thread);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}});t.start();for (int i 0; i 3; i) {System.out.println(hello main);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}t.join();System.out.println(main end);} }运行结果 main 中调用上述 join 方法有以下两种可能: 1.如果t线程此时已经结束了此时join 就会立即返回 没涉及到任何阻塞操作直接往下执行了 2.如果t线程此时还没结束此时 join 就会 阻塞 等待一直等待到t线程结束之后, join才能解除阻塞,继续执行 这就确保了 main 线程—定是后结束 阻塞 该线程暂时不参与cpu调度执行解除阻塞继续执行线程重新参与到cpu调度了 注意可怜的main线程 - main 一般情况都不会被其它线程 join即是不会被等待的 ~~ 批准main 你什么时候才能摆脱舔狗的身份啊 线程安全 批注(#^.^#) 浅谈一下接下来的博客会详细的讲讲多线程带来的线程安全 线程安全问题的原因: 1.抢占式执行随机调度 2.多个线程同时修改同一个变量 3.修改操作不是原子的 4.内存可见性 5.指令重排序 解决线程安全问题: 加锁(synchronized)

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

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

相关文章

外贸汽车配件做那个网站凡氪官网

1 什么是Servlet Servlet是Server Applet的简称,是用Java编写的是运行在 Web 服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,可以收集来自网页表单的用户输…

做个简单网站大概多少钱wordpress 顶部高度

Solus Linux 是一个独立的 Linux 发行版,它以简单易用和现代化的用户体验而著称。Solus Linux 使用的包管理器是 eopkg,它具有以下优势和特点: 用户友好的界面:eopkg 提供了一个简洁直观的命令行界面,使得用户可以轻松…

建设局网站信息发布规定在线制作网站免费

Oracle Receivable 是功能完备地应收款管理系统,它能够有效地管理客户、发票和收帐过程,因此是财务模块的重要组成部分,是财务系统中较为核心的模块之一。对于一个公司来说,是否能够与客户保持良好的跟踪,及时收取应收…

免费建网站网址活动网页怎么做

全世界只有3.14 % 的人关注了爆炸吧知识人们常说中国地图的形状像一只雄鸡,但具体到每一个省区则并没有一个明确的说法。看看下面这一套省区地图对应的有趣的想象,你觉得像还是不像?★安徽有人说安徽像一只斜倒挂着的蝙蝠,你能看出…

漂亮购物网站欣赏正规网站优化哪个公司好

时钟配置 我们使用s3c2440,主频12M,查看用户手册 通过锁相环抬升到400MHZ,分成三条通路,通过HHDIVN和PDIVN配置频率比,这个频率比配置手册已经给出。 配置MPLL主频400Mhz, 通过这个公式算出MPLL s、p、m都…

在线响应式网站成都网站设计服务商

使用方法:替换 易语言 LIB目录下的黑月支持库 记得备份 去掉代码长度过少不能编译的限制.(比如空代码) 优化编译出来的文件体积大小.(exe貌似没问题,dll貌似也没问题,就是dll对体积的优化不会太多) 体积减少了N倍...不解释,不解释,高手懂得... 转载于:https://blog.51cto.com…

江苏建设通网站建站之星模板的使用

static void Main(string[] args){dynamic point new {x 15,y 10};DrwaPoint(point);System.Console.Read();}static void DrwaPoint(dynamic point) >System.Console.WriteLine($"x:{point.x},y:{point.y}");

海淘网站入口网站建设评估体系

三层交换机下的VLAN划分,本身就已经做到了隔离,无法通信,VLAN的作用是可以隔离冲突域和广播域。那么,同一交换机不同VLAN如何隔离呢?接下来我们就跟随飞畅科技的小编一起来详细了解下吧! 什么是VLAN&#…

网站规划应遵循的原则有哪些家装设计师电话

问题描述如下: 有 三个源文件,A.h、B.cpp、C.cpp。 A.h是头文件,其中声明了三个变量a1、a2、 a3。 B.cpp是A.h中所声明的类的实现源代码,C.cpp是主程序文件。B.cpp和C.cpp中均包含头文件 A.h。 在编译时,编译能够通…

做公司网站解析网站建设的大公司好

.net core 实现基于 JSON 的实现多语言Intro上次我们提到了,微软默认提供基于资源文件的多语言本地化,个人感觉使用起来不是太方便,没有 json 看起来直观,于是动手造了一个轮子, dotnet core 基于 json 的本地化组件Ge…

建设网站的主要流程房地产销售话术

11-09 周四 CNN 卷积神经网络 时间版本修改人描述2023年11月9日09:38:12V0.1宋全恒新建文档 简介 学习一下CNN&#xff0c;卷积神经网络。使用的视频课程。视觉相关的任务&#xff1a; 人脸识别 卷积网络与传统网络的区别&#xff1a; <img altimage-20231109094400591 s…

新沂网站优化百度地图推广怎么收费标准

《嵌入式工程师自我修养/C语言》系列——程序的编译、链接过程分析&#xff08;简洁浓缩版&#xff09;&#xff01; 一、程序的编译1.1 预编译指令 pragma1.2 编译过程概述1.3 符号表和重定位表 二、程序的链接2.1 分段组装2.2 符号决议2.2.1 强符号与弱符号2.2.2 GNU编译器的…

福建省建设干部培训中心网站首页可以做装修效果图的网站

公司之前开发一个网盘系统, 可以上传文件, 打包压缩下载文件, 但是在处理大文件的时候, 服务器遇到了性能问题, 主要是这个项目是单机部署.......(离谱), 然后带宽只有100M, 现在用户比之前多很多, 然后所有人的压缩下载请求都给到这一台服务器了, 比如多个人下载的时候带宽问…

php网站调试环境搭建专业网站设计网络服务

在当今的虚拟世界中&#xff0c;3D建模技术被广泛运用于游戏开发、电影制作、工业设计等领域。在3D建模过程中&#xff0c;有时会遇到需要将代理模型转换成标准模型的情况。模大狮将从理论和实践两方面&#xff0c;介绍如何将3D代理模型转换成标准模型&#xff0c;以帮助读者更…

金泉网 网站建设一个人可以做多少网站

概述 Optional是JAVA 8引入的一个类&#xff0c;用于处理可能为null的值。 利用Optional可以减少代码中if-else的判断逻辑&#xff0c;增加代码的可读性。且可以减少空指针异常的发生&#xff0c;增加代码的安全性。 常用的方法 示例 代码 public class OptionalTest {pub…

福州网站建设精英微信小程序免费制作平台

从官网下载安装包后&#xff0c;需要重新配置一下依赖。&#xff08;sudo apt-get -f install&#xff09; 注意&#xff1a;软件源换成国内阿里的转载于:https://www.cnblogs.com/Sayno/p/9300442.html

装修行业门户网站模板实时热搜榜

从2000年微软启动.NET战略时&#xff0c;我还是一位大学生&#xff0c;当年著名的黑客Miguel de Icaza , Miguel 为了寻找GNOME项目开发框架经过充分的调研启动了一个志存高远的项目&#xff1a;Mono&#xff0c;一个Microsoft .NET Framework的自由GNU/Linux实现&#xff0c;我…

qq创号申请注册网站ui网页设计实习周报

目录 1 核心思想 2 K-means算法 2.1 算法概述 2.2 算法步骤 2.3 数学原理 2.4 ‘肘’方法确定K值 2.4.1 原理 2.4.2 步骤 2.4.3 代码实现 2.5 聚类评估方法 2.5.1 SC轮廓系数&#xff08;Silhouette Coefficient&#xff09; 计算方法 解读 注意事项 2.5.2 Cal…

校园网子网站建设管理意见或策划大网站开发语言

一、集成方式 在项目目录中执行以下命令&#xff1a; npm i -D mockjs二、配置 &#xff08;1&#xff09;在项目src目录下创建mock目录&#xff0c;并创建index.js文件&#xff0c;在index.js文件中添加以下代码&#xff1a; import Mock from mockjs// 配置需要mock的url…

青岛网上房地产网签查询神马seo服务

一、题目 1、题目描述 给你一个下标从 0 开始的二进制数组 nums&#xff0c;其长度为 n &#xff1b;另给你一个 正整数 k 以及一个 非负整数 maxChanges 。 Alice 在玩一个游戏&#xff0c;游戏的目标是让 Alice 使用 最少 数量的 行动 次数从 nums 中拾起 k 个 1 。游戏开始…