线程threading

ThreadPoolExecutor线程池用法简介

ThreadPoolExecutor 是 Java 中用于管理线程池的类,它提供了一种方便的方式来执行多线程任务。通过使用线程池,我们可以有效地管理和复用线程,提高程序的性能和资源利用率。 下面是 ThreadPoolExecutor 线程池的详细用法介绍: 创建线程池对象: ThreadPoolE ......
ThreadPoolExecutor 线程 简介

多线程第三章-AQS及Lock锁

### 前言 除了synchronized加锁之外,还有lock锁的方式,这俩种锁有什么区别尼? ###### synchronized synchronized锁是非公平的锁,是独占的锁,属于抢占式的锁,而且根据synchronized在类中修饰的位置不同,锁的定义也不一样 ##### lock ......
线程 第三章 Lock AQS

随笔(二十五)『3个线程交替输出1-100、交替输出ABC』

#### 1、3个线程交替输出1-100 ``` /** * 需求: * 3个线程交替输出1-100 */ public class TestPrint1_100 { private Integer state = 1; // 状态值1-t1执行, 2-t2执行, 3-t3执行 private In ......
线程 随笔 100 ABC

JAVA-- 在Java8 Parallel Stream中如何自定义线程池?

使用Parallel Stream时,在适当的环境中,通过适当地使用并行度级别,可以在某些情况下获得性能提升。 如果程序创建一个自定义ThreadPool,必须记住调用它的shutdown()方法来避免内存泄漏。 Parallel Stream默认使用的线程池 如下代码示例,Parallel Str ......
线程 Parallel Stream Java8 JAVA

java parallelStream 线程堵塞问题笔记

定义: Stream(流)是JDK8中引入的一种类似与迭代器(Iterator)的单向迭代访问数据的工具。ParallelStream则是并行的流,它通过Fork/Join 框架(JSR166y)来拆分任务,加速流的处理过程。最开始接触parallelStream很容易把其当做一个普通的线程池使用, ......
线程 parallelStream 笔记 问题 java

java协程线程之虚拟线程

前言 众所周知,java 是没有协程线程的,在我们如此熟知的jdk 1.8时代,大佬们想出来的办法就是异步io,甚至用并行的stream流来实现,高并发也好,缩短事件处理时间也好;大家都在想着自己认为更好的实现方式; 在来说说吧,我为什么会在今天研究这个破b玩意儿呢, 这事情还的从一个月前的版本维护 ......
线程 java

PerfView专题 (第十四篇): 洞察那些 C# 代码中的短命线程

## 一:背景 ### 1. 讲故事 这篇文章源自于分析一些疑难dump的思考而产生的灵感,在dump分析中经常要寻找的一个答案就是如何找到死亡线程的生前都做了一些什么?参考如下输出: ``` C# 0:001> !t ThreadCount: 22 UnstartedThread: 0 Backg ......
线程 PerfView 代码 专题

多线程part9——线程运行原理

栈和栈帧 JVM由堆、栈、方法区;栈内存就是给线程使用,当每个线程启动后,虚拟机就会为其分配一块栈内存 每个栈由多个栈帧(Frame)组成,对应每调用一次方法调用时所占用的内存 每个线程中只能有一个活动栈帧,对应当前正在执行的方法 线程上下文切换(Thread Context Switch) 由于一 ......
线程 原理 part9 part

springboot开启jdk虚拟线程

修改编译参数 ```xml org.apache.maven.plugins maven-compiler-plugin --enable-preview ``` 添加配置类 ```java package com.example.virtualthreadsdemo.config; import ......
线程 springboot jdk

多线程

**synchronized锁** synchronize是java的关键字,放在不同的位置锁住的代码不同 ......
线程

并发编程 ---为何要线程池化

## 引言 众所周知,使用线程可以极大的提高应用程序的效率和响应性,提高用户体验,但是不可以无节制的使用线程,为什么呢? ## 线程的开销 线程的开销实际上是非常大的,我们从空间开销和时间开销上分别讨论。 ### 线程的空间开销 线程的空间开销来自这四个部分: 1. 线程内核对象(Thread Ke ......
线程

python使一个函数在新线程中运行的装饰器

python在用tk编程时, 界面响应函数最好在另外一个线程中运行, 以免界面没有响应. 为方便使用, 封装了一个装饰器, 调用函数时自动在另外一个线程中运行. 示例代码如下: ```python import threading def run_in_thread(func): def wrapp ......
线程 函数 python

多线程开发 使用Semaphore和BoundedSemaphore对象

# 多线程开发 使用Semaphore和BoundedSemaphore对象 ## 一、使用Semaphore和BoundedSemaphore对象 在Python中,可以使用Semaphore和BoundedSemaphore来控制多线程信号系统中的计数器。 ### 1. Semaphore 在P ......
BoundedSemaphore 线程 Semaphore 对象

测试一个线程向集合添加数据,另一个线程读取数据

//Console.WriteLine(" "); //Console.WriteLine("测试一个线程向集合添加数据,另一个线程读取数据,请输入人名,输入exit退出"); //BlockingCollection<string> names = new BlockingCollection<s ......
线程 数据

多线程抢锁

/// <summary> /// 队列 /// </summary> private static BlockingCollection<UserInfo> queues = new BlockingCollection<UserInfo>(); /// <summary> /// 锁 /// < ......
线程

多线程+队列处理数据集合

//var users = new List<UserInfo>(); //for (int i = 0; i < 200000; i++) //{ // users.Add(new UserInfo // { // ID = i, // Name = "张三" + i.ToString(), // ......
队列 线程 数据

C#中可以通过管道流实现多线程之间数据交换

//Console.WriteLine(" 创建线程 "); //ServerThread serverThreadInstance = new ServerThread(pipeName); //Thread serverThread = new Thread(new ThreadStart(se ......
线程 管道 可以通过 之间 数据

Qt 专门的宏Q_GLOBAL_STATIC,用来实现线程安全的单例模式

Qt本身就提供了专门的宏 Q_GLOBAL_STATIC。通过这个宏不但定义简单,还可以获得线程安全性。 1、先看官方文档 https://doc.qt.io/qt-5/qglobalstatic.html https://doc.qt.io/qt-5/threads-reentrancy.html ......
Q_GLOBAL_STATIC 线程 模式 GLOBAL STATIC

Qt 单例模式:本身就提供了专门的宏 Q_GLOBAL_STATIC 通过这个宏不但定义简单,还可以获得线程安全性

单例模式 很多人洋洋洒洒写了一大堆 但是Qt本身就提供了专门的宏 Q_GLOBAL_STATIC 通过这个宏不但定义简单,还可以获得线程安全性。 rule.h 1 #ifndef RULE_H 2 #define RULE_H 3 4 class Rule 5 { 6 public: 7 stati ......

并发编程 --- 信号量线程同步

## 引言 上文[编码技巧 同步锁对象的选定](url)中,提到了在C#中,让线程同步有两种方式: - 锁(lock、Monitor等) - 信号量(EventWaitHandle、Semaphore、Mutex) 加锁是最常用的线程同步的方法,就不再讨论,本篇主要讨论使用信号量同步线程。 ## W ......
线程 信号

十八、QThread线程

1.进程线程关系介绍 一个应用程序至少要有一个进程QProcess类可以开新的进程 一个进程至少会有一个线程QThread 2.使用方法 (1)创建类实现QThread类或者QObject类 (2)重写父类的run方法,在run方法中写入线程要做的事,只有run方法在线程中 (3)创建对象,调用st ......
线程 QThread

Spring Boot中借助Redis实现分布式系统全局共享线程安全的阻塞队列

背景问题 我们都知道Java里的LinkedBlockingQueue,采用先进先出(FIFO)的方式存储元素,并且支持同时进行并发的读和写操作。内部使用ReentrantLock锁来保证多线程环境下的线程安全性。 LinkedBlockingQueue提供了以下主要方法: put(E e):将元素 ......
队列 分布式 线程 全局 Spring

线程死锁

## 什么是线程死锁? > 线程死锁描述的是这样一种情况:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无期限的阻塞,因此程序不可能正常终止 > 如下图所示,线程A 持有 资源2,线程B 持有 资源1,它们同时都想申请对方的资源,但都拿不到,所以这两个线程就会互相等待而进 ......
线程

php中多线程编程学习

class Request extends Thread { public $url; public $response; public function __construct($url) { $this->url = $url; } public function run() { $this-> ......
线程 php

常用语言的线程模型(Java、go、C++、python3)

了解一下线程模型还是很有必要的,如果不清楚语言层面上的线程在操作系统层面怎么映射使用,在使用过程中就会不清不楚,可能会踩一些坑 ......
线程 模型 常用 python3 语言

线程启动、结束,创建线程多法、join,detach

#线程启动、结束,创建线程多法、join,detach 视频链接:https://www.bilibili.com/video/BV1Yb411L7ak/?p=4&spm_id_from=333.880.my_history.page.click&vd_source=4c026d3f6b5fac18 ......
线程 detach join

线程池 解析用定制线程池

/** * @author keming.chen * @date 2021/6/17 17:12 * @desc 解析用定制线程池 **/ public class ParseThreadPools { /** * 默认使用线程数 = cpu核数*2 */ public static final ......
线程

高级面:线程池的7个参数详解

核心线程数 初始化的时候就按照这个参数生成线程 最大线程数 阻塞队列满了才会使用它,超过它触发拒绝策略 空闲时间 超过空闲时间,线程数降低到核心数目 时间单位 空闲时间的单位 线程工厂 一般默认,可以指定线程名称、线程组之类的参数 阻塞队列 一般需要修改为有界队列,超过核心线程数的任务先放到这里 拒 ......
线程 参数

使用Java线程同步工具类CountDownLatch

`java.util.concurrent.CountDownLatch`是Java并发并发编程中的线程同步工具类,基于AQS(java.util.concurrent.locks.AbstractQueuedSynchronizer)实现。 `CountDownLatch`工具类主要应用在如下场景 ......
线程 CountDownLatch 工具 Java

使用Java线程同步工具类CyclicBarrier

## 如何使用 `java.util.concurrent.CyclicBarrier`是Java并发并发编程中的线程同步工具类,基于`java.util.concurrent.locks.ReentrantLock`实现。 `CyclicBarrier`工具类主要应用在如下场景:让一组线程同时到达 ......
线程 CyclicBarrier 工具 Java