• 2024-08-15CountDownLatch
    importlombok.SneakyThrows;importjava.util.Date;importjava.util.concurrent.*;/*main上锁3线程1获得锁线程2获得锁线程3获得锁线程1释放锁2线程2释放锁1线程3释放锁0main解锁0**/publicclassT{@SneakyThrowspublicstaticvoidmain(String[
  • 2024-08-15ReentrantLock
    可打断importjava.util.concurrent.locks.ReentrantLock;/*ReentrantLock可打断**/publicclassT{privatestaticReentrantLocklock=newReentrantLock();publicstaticvoidmain(String[]args)throwsInterruptedException{Threadthre
  • 2024-08-14wait() vs sleep()
    wait(timeout)释放对象锁importlombok.SneakyThrows;publicclassT{@SneakyThrowspublicstaticvoidmain(String[]args){Objecto=newObject();Threadthread1=newThread(()->{try{synchronized
  • 2024-08-14线程执行顺序 join()
    importlombok.SneakyThrows;importjava.util.concurrent.TimeUnit;publicclassT{@SneakyThrowspublicstaticvoidmain(String[]args){Objecto=newObject();Threadthread1=newThread(()->{try{
  • 2024-07-25Csharper Async和Await
    Async和Await的学习AsyncAwait语法解读它是一个语法糖:编译器提供的便捷功能async是用来修饰方法,如果单独出现,方法会警告,没有什么作用await在方法体内部,只能放在async修饰的方法内,必须放在task前面async/await方法里面如果没有返回值,默认返回一个Task,或者void(推荐用Task,而
  • 2024-06-08C#异步编程是怎么回事(番外)
    在上一篇通信协议碰到了多线程,阻塞、非阻塞、锁、信号量...,会碰到很多问题。因此我感觉很有必要研究多线程与异步编程。首先以一个例子开始我说明一下这个例子。这是一个演示异步编程的例子。输入job[name],在一个同步的Main方法中,以一发即忘的方式调用异步方法StartJob()。
  • 2024-05-07c# 多线程的几种方式 【转载】
    1.什么是线程?进程作为操作系统执行程序的基本单位,拥有应用程序的资源,进程包含线程,进程的资源被线程共享,线程不拥有资源。 2.前台线程和后台线程的区别?程序关闭时,后台线程直接关闭,但前台线程会执行完后关闭。通过Thread类新建线程默认为前台线程。其他方式创建的都是后台线程
  • 2024-03-13JUC源码讲解:逐步解析 join()
    JUC源码讲解:逐步解析join()问题抛出join()在源码中其实是使用了wait()方法的,因此,wait()的特性join()都能继承过来,我们知道wait()有什么特性呢?wait()的特性:会释放锁对中断异常敏感会释放CPU时间片我也对wait()做了讲解,想了解可移步https://www.cnblogs.
  • 2024-03-13Java获取堆栈信息的3种方法
    本文分享自华为云社区《Java如何获取堆栈信息》,作者:皮牙子抓饭。在Java编程中,获取堆栈信息对于调试和故障排除非常重要。Java提供了多种方式来获取当前线程的堆栈信息,以便了解线程执行的情况。下面介绍几种常用的方法:1.使用Thread.currentThread().getStackTrace()可以通过Th
  • 2024-03-12多线程系列(十七) -线程组介绍
    一、简介在之前的多线程系列文章中,我们陆陆续续的介绍了Thread线程类相关的知识和用法,其实在Thread类上还有一层ThreadGroup类,也就是线程组。今天我们就一起来简单的聊聊线程组相关的知识和用法。二、什么是线程组线程组,简单来说就是多个线程的集合,它的出现主要是为了更方便的
  • 2024-02-28C#中的线程简介
    C#中的线程简介为什么要使用线程同一时间智能运行一个任务,长时间运行的任务独占整个计算机,造成其他程序无法响应。如果程序有bug会造成整个机器停止工作,用户只好重启计算机,造成数据丢失。于是,人们为操作系统引入了线程的概念。线程就是对CPU的虚拟化。一个线程就是一个逻辑
  • 2024-01-25iOS 多线程复习
    iOS中的线程主要有四种:1.pThread2.NSThread3.GCD4.NSOpreaction基础知识:线程、任务和队列的概念: 异步、同步&并行、串行的特点:组合特点:  1.pThread C语言所写,面向过程,使用较少.oc:#pragmaMark-pThread-(void)pThreadDemo{pthread_tpthre
  • 2024-01-22记录使用Redis当分布式锁
    在网上看到一次使用redis当分布式锁的文章,我就自己写了个demo前置条件:建议新建一个springboot工程(添加web依赖),然后自行整合mybatisplus、redis,可以参照以下链接:mybatisPlus:https://blog.csdn.net/wang20000102/article/details/132615071redis:https://blog.csdn.net/lwj_07/art
  • 2024-01-10Thread 之 join() 方法
    案例代码@Slf4jpublicclassJoinDemo{publicstaticvoidmain(String[]args)throwsInterruptedException{Threadt1=newThread(()->{log.info("{}线程启动",Thread.currentThread().getName());try{
  • 2023-12-12深入浅出Thread.currentThread()与this的区别
    Thread.currentThread()与this的意义Thread.currentThread()可以获取当前线程的引用this可以理解为调用当前方法的对象的引用初步分析代码如下,生成一个线程,并且启动线程。publicclassMain{publicstaticvoidmain(String[]args){Pointpoint=ne
  • 2023-11-27多线程.模拟龟兔赛跑
    packageJavaSE.Thread.document01;/***模拟龟兔赛跑*/publicclassDemo05implementsRunnable{publicstaticStringwinner;//胜者@Overridepublicvoidrun(){for(inti=1;i<=100;i++){if(Thread.currentThread().getName()
  • 2023-11-03代码模拟死锁
    publicclassDeadLockDemo{privatestaticObjectresource1=newObject();//资源1privatestaticObjectresource2=newObject();//资源2publicstaticvoidmain(String[]args){newThread(()->{synchronized(resource1
  • 2023-09-19提升 Spring Boot 吞吐量的 7 个神技,让你的项目飞起来!
    一、异步执行实现方式二种:使用异步注解@aysnc、启动类:添加@EnableAsync注解JDK8本身有一个非常好用的Future类——CompletableFuture@AllArgsConstructorpublicclassAskThreadimplementsRunnable{privateCompletableFuture<Integer>re=null;publ
  • 2023-09-16获得当前线程对象
     Thread.currentThread()在哪个线程中调用这个方法就返回哪个线程自身的对象引用 应用: 
  • 2023-09-15远程调用优化之多线程
    1.通过feign进行远程调用是一种同步调用,只有当一个远程调用执行完毕以后,才会进行下一个远程调用,效率较低。2.可以考虑业务的执行逻辑,如果各个远程调用之间互不影响的话,可以考虑使用多线程来进行优化,提高效率。1.配置线程池1.1在公共的微服务中编写ThreadPoolConfiguration
  • 2023-08-17面试常用代码
    死锁publicclassDeadLockDemo{privatestaticObjectresource1=newObject();//资源1privatestaticObjectresource2=newObject();//资源2publicstaticvoidmain(String[]args){newThread(()->{synchronized(resou
  • 2023-08-05Java多线程-龟兔赛跑
    Java多线程-龟兔赛跑packagecom.alibaba;publicclassTestThread003implementsRunnable{privateStringwinner;@Overridepublicvoidrun(){for(inti=0;i<=100;i++){booleanflag=getWinner(i);if(flag){
  • 2023-07-23自旋锁的简单实现
    实现自旋锁(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。自旋锁是互斥锁的一种实现,Java实现如下方所示。publicclassSpinLock{privateAtomicReference<Thread>o
  • 2023-07-20java 获取当前线程id
    如何实现Java获取当前线程ID1.整体流程为了获取当前线程的ID,我们需要按照以下步骤进行操作:步骤描述1获取当前线程对象2从线程对象中获取线程ID下面我们将介绍如何逐步实现这些步骤。2.获取当前线程对象要获取当前线程的ID,我们首先需要获取当前线程对象
  • 2023-06-17Async Await 快速Demo
    usingSystem;usingSystem.Threading;usingSystem.Threading.Tasks;namespaceAsyncAwaitDemo{classProgram{staticvoidMain(string[]args){Console.WriteLine($"a1,主线程开始,线程Id:{Thread.CurrentThread.ManagedThrea