原文: https://chenmingyu.top/concurrent-threadpool/ 线程池 线程池用来处理异步任务或者并发执行的任务 优点: 重复利用已创建的线程,减少创建和销毁线程造成的资源消耗 直接使用线程池中的线程,提高响应速度 提高线程的可管理性,由线程池同一管理 ThreadPoolExecutor java中线程池使用ThreadPoolExecutor实现 构造函数 ThreadPoolExecutor提供了四个构造函数,其他三个构造函数最终调用的都是下面这个构造函…
​ 我是一个Python技术小白,对于我而言,多任务处理一般就借助于多进程以及多线程的方式,在多任务处理中如果涉及到IO操作,则会接触到同步.异步.阻塞.非阻塞等相关概念,当然也是并发编程的基础. ​ 而当我接触到网络编程时,是使用listen().send().recv() 等接口,借助于Python提供的Socket网络套接字模块,基于UDP\TCP协议进行逻辑编写,会发现一个问题,socket接口都是阻塞型的.所谓阻塞型接口是指系统调用(一般是IO接口)不返回调用结果并让当前线程一直阻塞,…
从最简单的说起Thread和Runnable 说到并发编程,就一定是多个线程并发执行任务.那么并发编程的基础是什么呢?没错那就是Thread了.一个Thread可以执行一个Runnable类型的对象.那么Runnable是什么呢?其实Runnable是一个接口,他只定义了一个方法run(),这个run()方法里就是我们要执行的任务,并且是要被Thread调用的.因此,一个Runnable就可以理解为一个要被执行的任务,而Thread就是一个执行任务的工人! 接下来我们用一个例子来实践一下,我们有…
引入高速缓存概念 在计算机在执行程序时,以指令为单位来执行,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入. 由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行指令的速度很快,而从内存读取数据和向内存写入数据的过程相对很慢,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度.因此就引入了高速缓存. 特性:缓存(Cache memory)是硬盘控制器上的一块内存,是硬盘内部存储和外界接口之间的缓冲…
ThreadPoolExecutor全部参数的构造函数 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) { if (corePoolSize <…
ThreadPoolExecutor executor = new ThreadPoolExecutor( int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue); Core pool sizeThe lower limit of threads that are contained in the thread pool. Actua…
通用线程模型 在很多研发当中,实际应用是基于一个理论再进行优化的.所以,在了解JVM规范中的Java线程的生命周期之前,我们可以先了解通用的线程生命周期,这有助于我们后续对JVM线程生命周期的理解. 首先,通用的线程生命周期有五种,分别是:新建状态(NEW).可运行状态(RUNNABLE).运行状态(RUN).休眠状态(SLEEP).终止状态(TERMINATED).生命流程如下图所示: 新建状态(NEW).线程在此状态,仅仅是在编程语言层面创建了此线程,而在真正的操作系统中是没有创建的.所以,…
浅谈Synchronized: synchronized是Java的一个关键字,也就是Java语言内置的特性,如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,执行代码块时,其他线程 便只能一直等待,等待获取锁的线程释放锁,而获取锁的线程释放锁会有三种情况: 1).获取锁的线程执行完该代码块,然后线程释放对锁的占有; 2).线程执行发生异常,此时JVM会让线程自动释放锁; 3).调用wait方法,在等待的时候立即释放锁,方便其他的线程使用锁. Lock的特性: 1).Lo…
shell编程系列23--shell操作数据库实战之mysql命令参数详解 mysql命令参数详解 -u 用户名 -p 用户密码 -h 服务器ip地址 -D 连接的数据库 -N 不输出列信息 -B 使用tab键代替默认交互分隔符 -e 执行sql语句 其他选项 -E 垂直输出 -H 以HTML格式输出 -X 以XML格式输出 .写一个脚本,该脚本可以接收一个参数,参数为需要执行的SQL语句 .查询MYSQL任意表的数据,并将查询到的结果保存到HTML文件中 .查询MYSQL任意表的数据,并将查询…
Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为我们拥有网络.网络是一个神奇的东西,它改变了你和我的生活方式,改变了整个世界. 然而,网络的无标度和小世界特性使得它又是复杂的,无所不在,无所不能,以致于我们无法区分甚至无法描述. 对于一个码农而言,了解网络的基础知识可能还是从了解定义开始,认识OSI的七层协议模型,深入Socket内部,进而熟练地…