thread -- 22




1 2 3

200x200


引言我们已经介绍了 python 的几种线程同步工具Python 线程同步(一) -- 竞争条件与线程锁python 线程同步(二) -- 条件对象python 线程同步(三) -

#thread    #线程同步    #事件    #并发   

200x200


引言上两篇文章中,我们详细介绍了 Python 中的两种线程同步方式 -- 锁与条件对象Python 线程同步(一) -- 竞争条件与线程锁python 线程同

#python    #线程    #thread    #线程同步   

200x200


引言上一篇文章中,我们介绍了线程同步与 Python 中的锁机制Python 线程同步(一) -- 竞争条件与线程锁 但锁机制只能解决最为简单和通用的线程同步场景,本文我

#技术帖    #python    #thread    #线程同步   

200x200


引言上一篇文章中,我们详细介绍了 python 中的协程python 的协程 python 通过 yeild 关键字让出 CPU&

#技术帖    #python    #线程    #thread   

200x200


概述上一篇日志中,我们介绍了 java 的内存模型和 volatile 关键字实现java 内存模型与 volatile 的实现 我们提到,volat

#技术帖    #技术分享    #线程    #thread   

200x200


概述上一篇日志我们介绍了 java 类加载器与他们实际的类实现:java 类加载器详解 -- 双亲委派模式及实现其中,我们介绍了类加载器的双亲委派原则,以及很重要的一个原则:类&n

#技术帖    #技术分享    #线程    #类   
概述前面我们介绍了 Executor 框架Executor 框架及线程池的使用利用 Executor 框架,我们可以实现多个线程的并发调用基于 Executor 框架,java 提供了 ThreadPoolExecutor 实现了一个灵活、稳定的线程池,允许用户各种定制,同时,他还可以通过构造方法实例化一个对象来让用户根据自己的需求定制化该对象的操作 ThreadPoolExecutor 的创建ThreadPoolExecutor 的构造方法public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) { ... }  通过上面的构造方法,我们就可以轻松创建一个线程池,他有下列参数:corePoolSize -- 线程池目标大小,即在没有任何任务时的线程池大小,
#读书笔记    #技术帖    #线程    #thread   
概述让一个任务或线程启动很容易,但有时我们需要中止线程的执行,但这并不容易,因为 java 并没有提供任何机制来安全地终止线程本篇日志中,我们就来介绍一下 java 线程退出的几种方式 使用 volatile 类型参数保存取消状态由于线程间共享的特性,可以通过使用一个共享的 volatile 成员实现取消状态的保存,每隔一段时间,线程检查该成员的值判断是否应该退出这是一种常见的协作式机制,让取消任务的线程遵循一种协商好的协议package com.techlog.test.service; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; /** *
#读书笔记    #技术帖    #龙潭书斋    #线程   
Runnable 与 Callable上一篇日志中,我们设计了一个使用 ExecutorService 与 Runnale 接口创建线程的例子Executor 框架及线程池的使用此前我们介绍过 Runnable 与 Callable 的区别,Runnable 接口的 run 方法不能抛出异常也不具有返回值,而实际的使用中,我们常常需要在并发过程中获取每个线程的返回值,这时我们就需要 Callable 接口 使用 Future 收集线程执行结果最基本的线程执行结果收集方法是使用 Future 对象:package com.techlog.test.service; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executo
#技术帖    #龙潭书斋    #线程    #thread   
概述前面的日志中,我们主要介绍了 java 并发编程的基本内容和一些基本工具类我们已经知道,很多情况下,单线程线性执行的效率是不可以接受的,而为每个任务都创建线程,可能会无限制的创建下去,资源消耗会异常显著,同时,线程生命周期的开销非常高,不断创建与销毁造成了不必要的代价,而 JVM 还有这 thread 数、栈大小的限制,无线分配线程下去会很容易抛出 OutOfMemoryError,而这样的错误是非常危险的因此,在一定范围内,增加线程可以提高系统吞吐量,但如果超出了这个范围,再创建更多线程只会降低程序的执行速度,并且可能造成整个应用程序的崩溃很多时候,在原型设计和开发阶段,无线创建线程的模型可以很完美的运行,但是在高负载下运行或有人攻击你的接口的时候,这个隐患才会爆发出来 线程池此前,我们介绍过如何通过有界队列来防止高负荷的应用程序耗尽内存:java 中线程安全的容器类线程池则是另一种十分简化的线程管理工具 与上述模式相比,线程池具有显而易见的优势,顾名思义,线程池是一个缓存工作线程的资源池,当请求到来,通常无需重新创建线程,而是直接使用池中的线程,这样就减少了创建和销毁线程的巨大开销,同时也提高了响应速度通过调整线程池中线程数的多少,可以有效地保持处理器的忙碌状态,充分利用资源,也可以防
#技术帖    #龙潭书斋    #线程    #thread   
1 2 3



京ICP备15018585号