程序员经常要面临的一个问题就是:如何提高程序性能? 这篇文章,我们循序渐进,从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进,串联起高性能开发十大必须掌握的核心技术。 - I/O优化:零拷贝技术- I/O优化:多路复用技术- 线程池技术- 无锁编程技术- 进程间通信技术- RPC ...
分类:
其他好文 时间:
2021-07-27 17:35:42
阅读次数:
0
ThreadPoolExecutor添加线程源码解析——addWorker 该方法的主要目的就是为了向线程池中创建线程(worker),并执行线程。 private boolean addWorker(Runnable firstTask, boolean core) { retry: for (; ...
分类:
编程语言 时间:
2021-07-27 17:35:04
阅读次数:
0
FutureTask(未来任务) 一、前情回顾(重要) 首先我们先回顾一下多线程创建的方式 直接继承Thread方式 实现Runnable 方式 实现Callable方式 线程池方式 这四种方式主要分为两类:没返回值的(1,2) 有返回值的(3,4) 没返回值的相信已经烂熟于心了。这次我们讲讲有返回 ...
分类:
其他好文 时间:
2021-07-26 16:46:03
阅读次数:
0
线程池的作用 在多线程的应用中,线程的频繁创建和销毁会浪费时间,从而影响效率,所以引进线程池和概念,将多个线程维护在线程池中,避免了线程频繁创建与销毁的开销问题 线程池的结构 结构体 struct threadpool_t { pthread_mutex_t lock; //互斥锁 pthread_ ...
分类:
编程语言 时间:
2021-07-19 16:30:19
阅读次数:
0
Python支持多线程,但是由于GIL的限制并不能无限制的开启子线程。 通过semaphore我们可以控制子线程对于共享资源的访问,即可以阻塞一些子线程直到有空余的semaphore资源,但是并不能实际限制子线程数。 当我们需要开启成千上万个子线程时,很多时候并不希望这些子线程同时执行(可能受限于系 ...
分类:
编程语言 时间:
2021-07-15 19:01:30
阅读次数:
0
昨天在『.NET 大牛之路』技术群和大家聊到了对象池的话题,今天展开详细讲讲这个知识点。 池这个概念大家都很熟悉,比如我们经常听到数据库连接池和线程池。它是一种基于使用预先分配资源集合的性能优化思想。 简单说,对象池就是对象的容器,旨在优化资源的使用,通过在一个容器中池化对象,并根据需要重复使用这些 ...
分类:
Web程序 时间:
2021-07-12 18:18:31
阅读次数:
0
#ifndef THREAD_POOL_H #define THREAD_POOL_H #include <vector> #include <queue> #include <memory> #include <thread> #include <mutex> #include <conditio ...
分类:
编程语言 时间:
2021-07-05 18:38:48
阅读次数:
0
一、UML图 二、创建线程池 2.1、Executors工厂方法 在ThreadPoolExecutor类的文档注释中有这么一句话:An ExecutorService that executes each submitted task using one of possibly several p ...
分类:
编程语言 时间:
2021-07-05 18:34:44
阅读次数:
0
死锁产生的四个必要条件 互斥条件:一个资源每次只能被一个进程使用 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放 不剥夺条件:进程已获得的资源,在未使用完之前,不能强制剥夺 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系 实例 package com.yeyue.t ...
分类:
编程语言 时间:
2021-06-30 18:01:58
阅读次数:
0
本文讲一下Java线程池中创建 ThreadFactory 设置线程名称的三种方式。设置线程名称是很重要的,如果你没有设置过,说明你还“涩世”不深,这里面的坑还不曾踩过,而我 在坑里进去然后坑里出来,被坑的那是一个相当的爽啊~为了让不重蹈我的覆辙,为了未来不说起来都是满眼含着“热泪”,还是看下如何设 ...
分类:
编程语言 时间:
2021-06-25 17:08:09
阅读次数:
0