菜虚鲲教你学多线程

MR2数据集实战:5步搞定多模态谣言检测模型训练(附完整代码) 本文详细介绍了如何使用MR2多模态数据集构建高精度谣言检测系统,涵盖环境配置、数据准备、多模态特征工程、模型架构设计、训练调优及部署优化等5个关键步骤。通过双线性融合技术处理文本、图像和网页三模态数据,解决特征对齐和模态冲突等工程难题,并提供完整代码实现和性能优化方案。 阅读详情

背景

不知道菜虚鲲是什么?也许你可以在休闲时间里看看这个视频。你只需要知道,菜虚鲲和视频里的小哥很像,都喜欢唱,跳, rap 和 篮球。这个舞蹈的名称叫做《鸡你太美》,其中的篮球技巧非常的抓人眼球,后面的战术抖肩带也令人回味无穷。好了,背景知识介绍完毕。(以下内容相当不严谨,只为帮助大家理解多线程)

线程与进程

进程就像一个简化版的B站,里面有很多素材(线程)上演各种各样的沙雕视频。观众姥爷们(用户)看着这些沙雕视频很开心,有钱的赏钱,没钱的投个硬币,B站也算是圆满完成了自己的目标,二次元圈其乐融融。当然啦,一个菜虚鲲也是一个线程,它也在为着B站与观众老爷们的欢声笑语献出自己的一份力。

线程的几种状态

一个蔡徐坤被Up主创造(NEW)出来后,点击上传视频按钮(线程的**start()**方法),它就处于一种可以跳鸡你太美的状态了(RUNNABLE)。
现在只要等B站运维小姐姐(CPU调度系统)把它推荐到首页(CPU资源),观众姥爷就可以开看(pen)了。

同学们,我编不下去了。。。。我要开启奔放模式了。

正常来讲,在单线程的情况下,这只菜虚鲲就一直跳鸡你太美(RUNNING),直到跳完(run()方法执行完毕),然后就处于谢幕状态(TERMINATED)了,观众姥爷们也心满意足。

可现实是残酷的,首页坑位只有一个!其他沙雕视频里的菜虚鲲们(多个线程)也要跳鸡你太美!

这种情况下,第一个菜虚鲲(简称cxk001)就很难受。假如它正跳着呢,运维小姐姐突然把首页让给了了另一个视频里的菜虚鲲(cxk002)。cxk001发现,首页被占了,那就只能在角落里自己玩自己(回到RUNNABLE状态),直到它重回主页。

除了首页,还有一个东西很重要。众所周知,菜虚鲲喜欢篮球,鸡你太美里面最精彩的也莫过于它那精湛的篮球技巧。而篮球(临界资源,排他锁),只有一个。

所以在这段篮球炫技片段中,没有篮球的话,菜虚鲲肯定不干的。所以,即便把首页给菜虚鲲,但没有篮球的话,菜虚鲲会处于一种非常沮丧的状态(blocked状态),只有当其他的鲲把篮球让出来给这只鲲,它才能重拾信心,回到RUNNABLE状态,为观众姥爷呈现一段完美的 鸡你太美!。
有些菜虚鲲很有奉献(摸鱼)精神。他说:我先摸会鱼,你们先跳。然后主动把首页和篮球(不都会)让出来一段时间(调用Thread.sleep(long timeout)、 Object.wait(long timeout)。这两者的区别在于,前者是对线程调用,后者对锁调用。前者不会释放锁,后者会) 。还有些鲲很给领导面子,他说:领导先跳,领导跳完了我再跳(调用leaderThread.join(long)), leaderThread是某一个优先级比较高的线程,该方法同样也会释放锁)。这些主动让出首页的菜虚鲲就处于一种 超时等待状态(TIMED_WAITING)。当摸鱼时间结束后,它就又处于可以跳鸡你太美的状态了(RUNNABLE)。

还有一种情况,那就是多管闲事菜虚鲲,动不动给其他鲲发律师函, 让那些没拿到篮球的菜虚鲲起来跳鸡你太美。有的只随机给一个鲲发(调用锁的notify()方法),有的比较绝,给所有人都发(调用锁的notifyAll()方法),被发函的鲲就得回到RUNNABLE状态,心里美滋滋。

有的鲲心累啊,想跳不给跳,首页又不给,心态爆炸,直接说,老子不要球了,不跳了(调用锁对象的wait()方法,注意该方法没有指定时间长短)。此时,这只鲲就进入到无限期等待状态(WAITING)状态,这时候就只能等那些多管闲事的鲲来给自己发律师函,才能回到RUNNABLE状态。

现在,一只菜虚鲲的生命历程我们基本已经了解大半了。但是我们漏了一个重要情报!!!
怎么让篮球呢,当然是靠那些喜欢发律师函的鲲了(具体来讲,是通过调用篮球的notify()和notifyAll()方法)。

至此,我们也就介绍清楚了线程的整个生命周期。

下面开始一个菜虚鲲的一生总结:

  1. 被Up主创建出来(NEW)
  2. Up主点击上传按钮,菜虚鲲准备好了,但还没有获得篮球或者首页坑位(RUNNABLE)
  3. 获得篮球以及首页坑位,表演 鸡你太美!(RUNNING)
  4. 失去篮球,对人生失去信心(BLOCKED)
  5. 重新获得篮球,重拾信心(RUNNABLE)
  6. 表演完毕,完美谢幕(TERMINATED)
  7. 角落里摸鱼,好不自在(TIMED_WAITING,WAITING)

下面开始一个菜虚鲲的关键行为总结:

  1. 进行摸鱼(Object.wait (), Thread.sleep())。这两个方法都会放弃首页(cpu资源),前者会放弃锁,后者不会。
  2. 给 一条/所有 菜虚鲲发律师函(lockObject.notify(), lockObject.notifyAll())。该行为本质是唤醒那些需要锁资源的线程,lockObject也就是当前线程所持有的锁对象。
  3. 把首页让给其他领导菜虚鲲(leaderThread.join(), leaderThread是程序设计中的其他高优先级线程),让出首页和篮球的鲲处于阻塞状态。需要注意的点是,如果鲲1让鲲2 join,但是此时鲲2还没有被创建的话,鲲1还是要继续跳下去的。

举个栗子

package org.oe.notify;

import java.util.ArrayList;
import java.util.List;

/**
 * @program: learning-multi-thread
 * @description: 菜虚鲲教你多线程
 * @author: oe
 * @create: 2019-04-29 14:15
 */
public class XuKunCai implements Runnable{

  private Basketball basketball;
  public static final String PERCENTAGE_PLACEHOLDER = "%";
  public static final String RUNNING_REMARK = "正在表演 鸡你太美,当前进度:";
  public static final String WAIT_REMARK = "让出了球权,下面有请他的弟弟们上台表演:";
  public static final String NOTIFIED_REMARK = "弟弟被唤醒了,接下来看我的:";
  private int progress;

  public XuKunCai(Basketball basketball, int progress) {
    this.basketball = basketball;
    this.progress = progress;
  }
  public void run() {
    dancingBeautifulChicken(basketball, 0);
  }
  public void dancingBeautifulChicken(Basketball basketball, int schedule) {

    synchronized (basketball) {
      while ((schedule = schedule + 50) <= 100) {
        try {
          basketball.notify();
          System.out.println(Thread.currentThread().getName() + RUNNING_REMARK + schedule + PERCENTAGE_PLACEHOLDER);
          System.out.println(Thread.currentThread().getName() + WAIT_REMARK);
          basketball.wait(1000);
          System.out.println(Thread.currentThread().getName() + NOTIFIED_REMARK);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
      }
      System.out.println(Thread.currentThread().getName() + "表演完毕");
      basketball.notify();

    }

  }


  public static void main(String[] args) {
    Basketball basketball = new Basketball();
    List<Thread> threadList = new ArrayList<>();
    for (int i = 0; i< 3; i++) {
      threadList.add(new Thread(new XuKunCai(basketball, 0), "菜虚鲲00"+(i + 1)));
    }
    threadList.get(0).setPriority(10);
    threadList.get(1).setPriority(1);
    threadList.get(2).setPriority(1);
    threadList.forEach(thread -> thread.start());

    boolean finish = false;
    while (!finish) {
      for (Thread thread : threadList) {
        if (thread.getState() == Thread.State.BLOCKED) {
          System.out.println(Thread.currentThread().getName() + ":我是"+ thread.getName() +
                  ",优先级是"+thread.getPriority()+",我要报警了" +"又没拿到球");
          try {
            thread.join();
          }catch (InterruptedException e) {
            e.printStackTrace();
          }
        }
      }
      if (threadList.get(0).getState() == Thread.State.TERMINATED &&
              threadList.get(1).getState() == Thread.State.TERMINATED &&
              threadList.get(0).getState() == Thread.State.TERMINATED ) {
        finish = true;
      }
    }
  }


  private static class Basketball {

  }
}

在这一实例中,我创建了三个菜虚鲲实例(这里采用的是实现Runnable接口),它们在Run()方法中执行的任务是dancingBeautifulChicken()方法,该方法将打印该鲲的跳舞进度,每跳50%,就让出临界资源:basketball对象,并唤醒其他阻塞的线程。最终,三只鲲都跳完鸡你太美,返回main()主线程。值得注意的是,由于dancingBeautifulChicken()方法中加锁的对象是basketball,所以释放锁和唤醒其他线程的操作也都是对basketball调用相应方法完成的。

执行结果如下,这里我有个疑问,我对三个线程设置的优先级没有起到作用,有知道原因的小伙伴请帮我解答一下。

菜虚鲲001正在表演 鸡你太美,当前进度:50%
main:我是菜虚鲲002,优先级是1,我要报警了又没拿到球
菜虚鲲001让出了球权,下面有请他的弟弟们上台表演:
菜虚鲲003正在表演 鸡你太美,当前进度:50%
菜虚鲲003让出了球权,下面有请他的弟弟们上台表演:
菜虚鲲002正在表演 鸡你太美,当前进度:50%
菜虚鲲002让出了球权,下面有请他的弟弟们上台表演:
菜虚鲲003弟弟被唤醒了,接下来看我的:
菜虚鲲003正在表演 鸡你太美,当前进度:100%
菜虚鲲003让出了球权,下面有请他的弟弟们上台表演:
菜虚鲲002弟弟被唤醒了,接下来看我的:
菜虚鲲002正在表演 鸡你太美,当前进度:100%
菜虚鲲002让出了球权,下面有请他的弟弟们上台表演:
菜虚鲲003弟弟被唤醒了,接下来看我的:
菜虚鲲003表演完毕
菜虚鲲002弟弟被唤醒了,接下来看我的:
菜虚鲲002表演完毕
菜虚鲲001弟弟被唤醒了,接下来看我的:
菜虚鲲001正在表演 鸡你太美,当前进度:100%
菜虚鲲001让出了球权,下面有请他的弟弟们上台表演:
菜虚鲲001弟弟被唤醒了,接下来看我的:
菜虚鲲001表演完毕

Process finished with exit code 0

总结

本篇文章逻辑很不严谨,不太像博客,甚至有点像吐槽,大家看看笑一笑也就行了。目的在于给学习java多线程知识的你提供一种思路,欢迎评论区讨论。

声明:本文中出现的人物与事件均与现实世界无关,如有雷同,纯属偶合,拒绝接受任何律师函。
本文作者保有对该文章的最终解释权。

最后,转载本文请标明作者和出处。

YOLOv8集成CPCA(Combined Parallel Convolutional Attention)注意力机制模块YOLOv8深度教程 YOLOv8集成CPCA注意力模块教程摘要 本教程详细介绍了如何将YOLOv8 CPCA(Combined Parallel Convolutional Attention)注意力模块集成到YOLOv8目标检测框架中。CPCA模块结合了通道注意力和多尺度空间注意力机制,通过全局池化和双路径融合增强通道特征,并利用多尺度深度可分离卷积捕获空间上下文信息。YOLOv8 教程包含完整的实现步骤:创建CPCA模块代码、修改YOLOv8模型解析逻辑、编写自定义配置文件,YOLOv8YOLOv8YOLOv8YOLOv8 阅读详情

相关推荐

万达电影 com.wandafilm.app headers check

万达电影 安卓逆向 抓包 逆向 check

weixin_43786514的博客 1438

2021-11-10

C# TabControl控件之实现状态栏居左,文字水平方向 废话不多少先放图,各位看官有需要拿走,哞哞哒,哞哞哒!!!! 下面是具体的步骤,学习的人少,就简单写点吧,也没人看。 一,创建TabControl控件 (1)创建项目就省略了吧; (2)创建用户控件"UserControl",这里我的名称叫“UserControl3”; (3)在用户控件“UserControl3”中拖放一个TabControl控件。 (4)注意这里可以先设置下Alignment属性设置为left,居左,这里不需要通过代码重绘

cxg412237430的博客 515

Python实战:3步搞定DICOM转JPG/PNG(附批量处理脚本)

本文详细介绍了如何使用Python在3步内将DICOM医学影像转换为JPG/PNG格式,并提供了批量处理脚本。通过Pydicom、Pillow和NumPy库的组合,解决了像素值处理、批量转换效率和医学图像特性保留等关键问题,适合医疗AI开发者和放射科医生快速集成到工作流中。

numpy6sculptor的博客 592

教妹学 Java:难以驾驭的多线程

多线程

沉默王二 6992

ADC的有效位数(ENOB)、信噪比(SNR)和无杂散动态范围(SFDR)——详细分析

设计提示(从文本):选择ADC时,看数据手册的SNR、ENOB、SFDR vs 频率图。减小抖动:用低抖动时钟、优化PCB、电源滤波。对于大信号:关注SFDR(失真);小信号:关注SNR/ENOB(噪声)。如果ENOB不足,用过采样或多ADC并行提升(但增加复杂度)。为什么这段重要?它解释了为什么高速ADC(如用于5G、雷达)的规格那么贵:抖动和失真限制了高频性能。理解这些,能帮你避免设计陷阱。

VectorShift的博客 1404

OpenHarmony 显示Display驱动全栈解析:DisplayLayer + Gralloc + Gfx 三位一体,打造高性能图形底座

OpenHarmony Display显示驱动模块是系统图形渲染和显示功能的基础组件,负责管理显示设备、图层渲染、内存分配等核心功能。该模块采用HDI(Hardware Driver Interface)设计架构,为上层图形服务提供统一的显示能力接口,实现了显示设备的初始化、图层管理、内存分配与映射、硬件加速等关键功能。DisplayLayer:负责显示图层的管理, 包括图层创建、显示属性设置、图层填充及刷新等操作;

m0_67505153的博客 315

教小师妹学多线程,看完我写的例子,脸红成那样!

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!???? 一、前言 对于在校学习期间的计算机、软件工程的学生来说,只要学到 Java 多线程,就开始犯迷糊了! 刚知道咋打开 IDEA,费劲扒拉的写个 HelloWorld,就要上手搞多线程绝对是史诗级理解难度。这东西怎么跑起来的、怎么还有一个run方法、各种状态是啥意思、还要休眠睡一会,纳尼? 以我的学习经历来说,一个知识点是否能快速接受并学习到,往往是看有没有一个合适的场景和好的例子,来引导读者

bugstack虫洞栈 9444

《干货满满!AI 应用架构师打造 AI 驱动生产计划的实战技巧》

生产计划是制造企业的“大脑”——它决定了买什么物料、产多少产品、用什么设备、什么时候交货,直接影响企业的成本、效率和客户满意度。需求预测靠经验,误差常超20%;排产依赖Excel,调整一次要3天;供应链协同靠邮件,物料延迟导致停产屡见不鲜。作为AI应用架构师,我们的任务是用AI重新“激活”这个“大脑”——用数据驱动的预测替代经验判断,用智能优化替代人工排产,用实时协同替代被动响应。本文结合3个制造业实战案例5段可运行代码2个数字孪生模型,从架构设计→核心模块实现→落地踩坑。

移动开发前沿的博客 1083

JAVA多线程与高并发(五)[ThreadLocal,强软弱虚引用]

link-JAVA多线程与高并发系列[前言,大纲,目录] ThreadLocal 假设有一个静态变量,线程使用它的过程中可能会做一些修改,但是这些修改只想在这个线程内部生效,不想影响其他线程,那么就应该用ThreadLocal. 举个栗子 public class ThreadLocal2 { // 创建一个ThreadLocal变量 static ThreadLocal<Person&...

书院二层楼 692

AI应用架构师实战:超算中AI与量子计算融合的初探与架构

当大模型的算力需求突破E级超算的极限,当量子计算的“量子优势”从实验室走向真实场景,超算+AI+量子计算的融合架构成为解决复杂问题的关键路径。本文从架构师的实战视角出发,系统拆解三者融合的底层逻辑:从“计算本质”的第一性原理推导,到“量子-经典异构”的架构设计;从“量子机器学习”的代码实现,到“金融/医药”的场景落地。我们将回答:如何用超算支撑量子计算的噪声抑制与纠错?如何用量子计算加速AI模型的训练与推理?如何设计可扩展、高可用的融合系统?最终给出架构师的实战指南——从技术选型到运营管理的全流程方法论。

AIGC应用创新大全的博客 924

深度强化学习 | 基于SAC算法的移动机器人路径跟踪(附Pytorch实现)

软性演员-评论家(Soft Actor-Critic, SAC)算法是基于最大熵原理的离线策略方法,本节将基于深度强化学习中的SAC算法实现移动机器人的路径跟踪,介绍网络设计、动作空间设计和奖励函数设计,并提供Pytorch实现加深理解

FRIGIDWINTER的博客 5736

基于Thinkphp-Laravel框架的评教评学系统vue

评教评学系统根据使用用户将分为三个模块:学生端模块,教师端模块,和管理员端模块。登录功能:根据登录的用户类型不同,分别进入相应类型的模块[10]。学生端模块:1.学生登录之后可以查看和维护自己的信息。2.学生可以查看每门课程教师评学结果。3.学生可以进行评教操作:查看已经评价的课程;查看未评价的课程;可以对未评价的课程进行评教。4.学生退出登录功能。教师端模块:1.教师登录之后可以查看和维护自己的信息。2.教师可以查看每门课程学生评教结果。

豆包程序员 1176

【二】MADDPG多智能体算法实现(parl)【追逐游戏复现】

论文全称:Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments 论文原文:https://download.youkuaiyun.com/download/sinat_39620217/16203960 论文翻译:https://blog.youkuaiyun.com/qiusuoxiaozi/article/details/79066612 ...

丨汀、的博客 2万+

大聪明教你学Java | 带你学习Java多线程

前言 相信每一位程序猿对“多线程”这个概念应该都不陌生,无论是在开发还是面试的时候,都会遇到多线程的问题。不过,一定有很多小伙伴才刚刚接触到多线程,那么在此就由小弟为各位小伙伴细细说说什么是多线程。 在开始之前,先简单介绍一下什么是线程~ Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一个基本单位。线程是比进程更小的执行单位,线程是进程的基础之上进

不肯过江东丶 7649

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

对象字段的虚共享问题是指什么?如何解决对象字段的虚共享问题?

写在前面 本文隶属于专栏《100个问题搞定Java虚拟机》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和文献引用请见100个问题搞定Java虚拟机 解答 假设两个线程分别访问同一对象中不同的 volatile 字段,逻辑上它们并没有共享内容,因此不需要同步。然而,如果这两个字段恰好在同一个缓存行中,那么对这些字段的写操作会导致缓存行的写回,也就造成了实质上的共享。 这就是对象字段的虚共享问题(false sharing)。 Java8引入了一个新的注释 @

Shockang的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

《教鲲、做梦、自主学习:北冥之鲲的三大隐藏技能》

所有思考过程你都可以在界面中通过 [梦] 标签看到(如不想看,可点击“收起思考”)。你教它的每句话都会被立刻吸收,它会尝试从中提炼规律,并存入长期记忆。你只需每天回来看看,会发现它又学会了一些新东西,体现在更准确、更丰富的回答中。导语:它不只会回答问题,还能被你亲手“喂养”,在你休息时自己成长。· 长期记忆只存储从公开材料提炼的抽象知识,不记录任何个人隐私。· “教:python的GIL影响多线程性能”· 无账号、无登录,你的使用痕迹不会被追踪。· “教:庄子名周,战国时期宋国人”

2301_81688149的博客 237

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

for循环改为多线程方式进行执行_教妹学 Java:难以驾驭的多线程

00、故事的起源“二哥,上一篇《集合》的反响效果怎么样啊?”三妹对她提议的《教妹学 Java》专栏很关心。“这篇文章的浏览量要比第一篇《泛型》好得多。”“这是个好消息啊,说明更多人接受了二哥的创作。”三妹心花怒放了起来。“也许没什么对比性。”“没有对比性?我翻看了一下二哥 7 个月前写的文章,是真的水啊,嘻嘻。”三妹卖了一个萌,继续说道,“说实话,竟然还有读者愿意看,真的是不可思议。”“...

weixin_31115195的博客 527

美菜网面经

文章目录美菜网一面 美菜网通过了一面,由于收到了美团的意向书,就不参加美菜网的二面了,不浪费面试官老师的时间了。 美菜网一面 美菜一面(53min) 自我介绍 简单聊一下自己的学习习惯,什么时候会写博客? 操作系统: 进程和线程的区别 多进程和多线程的应用场景 线程切换的时候都干了什么 进程间的通信方式 管道中全双工和半双工 socket实现进程间通信的步骤 计算机网络: TCP协议全称、是否可靠,如何保证的? 设计一个聊天功能要求基于TCP协议的应用层协议 HTTP报文头结构 OSI七层模型以及四层模

MarkusZhang的博客 876

手把手教你实现一个 Python 多线程下载器

前言 下载文件是我们生活中的一个常见的需求,因此衍生的下载工具也非常多,各有各的优势以及不足之处。作为一个编程爱好者,我喜欢去研究它们是怎么实现文件下载功能的。 我的主要使用的编程语言是 Python ,所以今天我将以 Python 为切入点带你一步步实现一个简易的文件下载器。 这个下载器将会分为几个版本 单线程不带进度条的下载器 单线程带进度条的下载器 多线程带进度条的下载器 如果你感兴趣,我们可以开始了! 懒得看过程的可以直接到文末取有详细注释的代码(开始之前这部分要看)。 开始之前 Py

weixin_56659172的博客 6748

模拟教务评教(强智教务)—一件评教实现原理

前不久,学校有个校园帮助型app某某圈因为一件评教功能被教务批评了。现在有很多查成绩,查课程的app,他们的实现原理到底是啥了。这两天来到发小扬州这边,学习实现了这个功能,并且用java和python都写了一下,但是鉴于web端只会java,最后集成到springboot部署到服务器提供的小服务。 以前只知道这些东西是爬虫爬出来的,原本以为非常简单,自己研究了一下发现还是有很多的坑和坎。大...

bigsai 5739

安琪拉教百里守约学并发编程之多线程基础

《安琪拉与面试官二三事》系列文章 一个HashMap能跟面试官扯上半个小时 一个synchronized跟面试官扯了半个小时 《安琪拉教鲁班学算法》系列文章 安琪拉教鲁班学算法之动态规划 安琪拉教鲁班学算法之BFS和DFS 安琪拉教鲁班学算法之堆排序 《安琪拉教妲己学分布式》系列文章 安琪拉教妲己分布式限流 《安琪拉教百里守约学并发编程》系列文章 安琪拉教百里守约学并发编程之多线程基础 本文...

安琪拉的博客 6526

一分钟教你理解什么是多线程

我们都知道,如果程序在没有跳转语句的前提下,都是按照程序的编写顺序由上至下依次执行的,那假如现在想让你设计一个程序,可以边打游戏边听歌,那么我们该怎么设计呢? 如果你不知道多线程的概念的话,肯定是没有办法设计的,但是我们平常生活中,多线程无处不在,手机,电脑都有多线程的体现。因此,如果要解决上述问题,咱们得使用多进程或者多线程来解决. 1. 并发与并行 并发:指两个或多个事件在同一个时间段内发...

swordsmanye的博客 4232

Java多线程基础,你可以这样学

Java多线程,主要讲述什么是多线程,多线程的创建方式,多线程引发的安全问题及如何解决,线程间通信。

IDEA操作工的博客 380

多线程与高并发四:VarHandle与强软弱虚引用和ThreadLocal

一:VarHandle 上一篇说了AQS的源码,其中还有一个知识点VarHandle,看下面的代码 大家会问:VarHandle是什么?有什么作用? 其实:VarHandle是jdk1.9之后才出现的,表示指向某个变量的引用,可以完成原子性的线程安全操作可以通过cas方式进行比较设值。比反射快,直接操纵二进制码,反射每次操作前都要做检查 二:强软弱虚引用 博客部分内容引用:http://blog.youkuaiyun.com/liuxian13183 强引用 Object object=new Object();

qq_40230026的博客 1208
上一篇: LeetCode算法题之9:Palindrome Number
下一篇: VirtualBox 7.0.10 安装 CentOS 7
耐利
博客等级 码龄12年 188粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值