当前位置: 首页 > news >正文

做自己的网站可以赚钱吗公司注册网站方法

做自己的网站可以赚钱吗,公司注册网站方法,郑州网站开发培训班,重庆哪里可以做网站目录 一、定义与特性 二、虚拟线程实现 2.1 使用 Thread.startVirtualThread() 创建 2.2 使用 Thread.ofVirtual() 创建 2.3 使用 ThreadFactory 创建 2.4 使用 Executors.newVirtualThreadPerTaskExecutor()创建 三、虚拟线程和普通线程的区别 3.1 线程管理方式不同 3…

目录

一、定义与特性

 二、虚拟线程实现

2.1 使用 Thread.startVirtualThread() 创建

2.2 使用 Thread.ofVirtual() 创建

2.3 使用 ThreadFactory 创建

2.4 使用 Executors.newVirtualThreadPerTaskExecutor()创建

三、虚拟线程和普通线程的区别

3.1 线程管理方式不同

3.2 创建成本不同

3.3 并发编程模型的简化

3.4 阻塞操作的影响


一、定义与特性

定义:

        (1)虚拟线程是Java19提出来的一个概念,Java19提供特性预览,开放实装是Java21。

        (2)虚拟线程是一种由JVM而非操作系统直接管理的线程。它独立于操作系统。虚拟线程是依附于主线程的,如果主线程销毁了,虚拟线程也不复存在。

特性(优点):

        1.轻量级:虚拟线程的创建和销毁代价极低,与传统线程相比内存占用少。

        2.高并发:支持数百万级别的并发进程,不会因线程数量限制系统性能。

        3.与传统线程兼容:完全兼容现有的线程API,无需修改代码即可引入虚拟线程。

缺点:

        1.不适用于计算密集型任务:虚拟线程适用于I/O密集型任务,但不适用于计算密集型任务,因为密集型计算始终需要CPU资源作为支持。

        2.与某些第三方库不兼容。

 二、虚拟线程实现

虚拟线程的使用和普通线程几乎一样,唯一的区别在于创建虚拟线程只能通过特定的方法。

在SpringBoot中使用虚拟线程要求SpringBoot的版本最低是 3.x ,JDK的版本不能低于21

2.1 使用 Thread.startVirtualThread() 创建

直接通过Thread静态方法创建,该方式无法指定线程名称,线程名称默认为:null

    @Testvoid testVirtualThread4() {Thread.startVirtualThread(() -> System.out.printf("线程ID:%s - 任务执行完成", Thread.currentThread().threadId())) ;}

2.2 使用 Thread.ofVirtual() 创建

ofVirtual()方法创建的虚拟线程默认是自动执行的,可创建不自动启动的线程,手动执行。

    @Testvoid testVirtualThread2() {// 创建虚拟线程并自动执行Thread.Builder.OfVirtual virtual = Thread.ofVirtual().name("pack1");virtual.start(() -> System.out.printf("%s - VirtualThread1自动执行任务完成\n", Thread.currentThread().getName()));// 创建不自动启动的线程Thread thread = virtual.unstarted(() -> System.out.printf("%s - VirtualThread1手动执行任务完成\n", Thread.currentThread().getName()));// 手动启动虚拟线程thread.start();}

2.3 使用 ThreadFactory创建

    @Testvoid testVirtualThread3() {ThreadFactory threadFactory = Thread.ofVirtual().name("threadFactory").factory();threadFactory.newThread(() -> System.out.printf("%s - 通过工厂创建执行任务完成", Thread.currentThread().getName())).start();}

2.4 使用 Executors.newVirtualThreadPerTaskExecutor()创建

创建一个执行器,为每个任务启动一个新的虚拟线程

    @Testvoid testVirtualThread1() {try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {IntStream.range(0, 10_000).forEach(i -> executor.submit(() -> {Thread.sleep(Duration.ofSeconds(1));System.out.println(STR."task: \{i}");return i;}));}}

三、虚拟线程和普通线程的区别

3.1 线程管理方式不同

  • 虚拟线程:虚拟线程由JVM管理,少量映射到操作系统线程上,实现轻量化,避免了直接依赖操作系统的线程创建、调度和销毁开销。
  • 普通线程:传统的线程是由操作系统直接管理的,每创建一个线程都会占用系统资源,并由操作系统负责调度。

3.2 创建成本不同

  • 虚拟线程:创建成本低,因为不需要操作系统的参与,大多数管理工作由JVM来完成。
  • 普通线程:创建成本比较高,每个线程都会占用一部分操作系统的资源,如:内存和CPU,并且需要频繁的上下文切换。

3.3 并发编程模型的简化

  • 虚拟线程:虚拟线程轻量高效,无需复杂线程池管理,每个任务可直接分配独立线程执行。
  • 普通线程:传统线程开销大,通常需线程池优化,避免频繁创建销毁。

3.4 阻塞操作的影响

  • 虚拟线程:虚拟线程能高效处理阻塞操作,JVM可轻量挂起阻塞线程并调度其他任务,几乎无系统压力。
  • 普通线程:阻塞操作会导致线程挂起,高并发时可能耗尽系统资源。
http://www.dtcms.com/a/436935.html

相关文章:

  • 珠海营销营网站建设做期货主要看哪个网站
  • 主题资源网站创建时 如何突出设计的特点写轮眼python代码
  • 视频网站开发文档魔智科技logo在线设计
  • 刷网站百度关键词软件个人网站制作方法
  • 有网站可以接设计的单子做吗深圳网站建设选哪家
  • Java学习之旅第一季-25:一维数组
  • 盐城网站开发公司网络营销师培训学校
  • 分析对手网站的优化方法网站直播怎么做
  • 昭通网站seo红圈工程项目管理软件
  • 做网站私活在哪接国外做家装的网站有哪些
  • 太仓企业网站建设公司wordpress stop
  • 建立企业网站公司安徽省建设厅八大员报名网站
  • 网站建站分为两种成都十大设计工作室
  • 零基础 网站一家企业如何建设自己的网站 下载
  • 网站开发的费用开源社区源码
  • 购物网站建设实训心得体会欢迎访问语文建设杂志网站
  • 成都手机号码销售网站建设网站后台管理模板下载
  • 微信 网站 收费标准网站建设招标公示
  • 网站制作广重庆专业网站排名团队
  • 普拓网站建设网络平台建设公司排名
  • 山东省建设工程造价管理协会网站网站鼠标代码
  • 网站建设宽度一般都是多少钱wordpress升级后编辑器没有
  • 网站建设相关文章网站开发常用哪几种语言
  • 做网络投票网站好做吗网络推广公司怎么接单
  • 沈阳网站建设21anshan科技感设计感的展厅
  • 企业网站报价模板下载制作网页网站
  • 西安哪个公司可以做网站网站培训中心
  • 专业模板建站软件wordpress笔记主题
  • 通过模板做网站手机网站方案
  • 网站建设最新技术及发展趋势wordpress显示选项取消了吗