1.线程池原理 :伪代码
在线程池中假设最多开3个线程,当小于三个,进行创建,添加到集合中,然后不停的轮训线程集合进行执行,直到为空时,进入等待状态
public class ThreadPool {
int maxCount = 3;//假设最多开只能开三个线程
AtomicInteger count =new AtomicInteger(0);// 当前开的线程数 count...
分类:
编程语言 时间:
2016-05-12 22:11:33
阅读次数:
142
线程池的关键点是:1、尽量减少线程切换和管理的开支; 2、最大化利用cpu。对于1,要求线程数尽量少,这样可以减少线程切换和管理的开支;对于2,要求尽量多的线程,以保证CPU资源最大化的利用。 所以对于任务耗时短的情况,要求线程尽量少,如果线程太多,有可能出现线程切换和管理的时间,大于任务执行的时间 ...
分类:
编程语言 时间:
2016-05-11 13:30:52
阅读次数:
2027
1.安装: apt-get install axel 2.用法: axel 参数 文件下载地址 3.常用参数: -n 指定线程数 -o 指定文件存储位置(如不指定,默认存在当前位置(pwd)) -q 静默模式 -s 指定每秒的最大比特数(用处是,如果你还在干其它连网的事,不想让这个下载占满带宽,可以 ...
分类:
编程语言 时间:
2016-05-04 13:15:54
阅读次数:
250
ListenableFuture顾名思义就是可以监听的Future,它是对java原生Future的扩展增强 RateLimiter类似于JDK的信号量Semphore,他用来限制对资源并发访问的线程数,本文介绍RateLimiter使用 Guava并发 ListenableFuture RateL ...
分类:
其他好文 时间:
2016-05-04 10:21:02
阅读次数:
219
CPU个数:这里指物理上的CPU个数,即在dos界面中,输入systeminfo时,显示信息中的处理器个数 CPU核数:这里指CPU核心数,即在dos界面中,输入wmic后,在键入CPU get * 时所显示的NumberOfCores CPU线程数:这里指在dos界面中,输入wmic后,在键入CP ...
分类:
编程语言 时间:
2016-05-02 18:39:38
阅读次数:
2867
ThreadLocal为每个使用该变量的线程提供独立的变量副本,即每个线程内部都会有一个该变量,且在线程内部任何地方都可以使用,线程之间互不影响,这样一来就不存在线程安全问题,也不会严重影响程序执行性能。所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
对比同步机制与ThreadLocal,可以得出同步通过加锁的方式实现了线程数据共享,也就是以时间换空间,而Th...
分类:
编程语言 时间:
2016-04-29 19:57:18
阅读次数:
200
我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:
如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。
那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?
在Java中可以通过线程池来达到这样的效果...
分类:
编程语言 时间:
2016-04-29 17:49:57
阅读次数:
160
ThreadLocal为每个使用该变量的线程提供独立的变量副本,即每个线程内部都会有一个该变量,且在线程内部任何地方都可以使用,线程之间互不影响,这样一来就不存在线程安全问题,也不会严重影响程序执行性能。所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
对比同步机制与ThreadLocal,可以得出同步通过加锁的方式实现了线程数据共享,也就是以时间换空间,而Th...
分类:
编程语言 时间:
2016-04-26 21:54:52
阅读次数:
206
我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:
如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。
那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?
在Java中可以通过线程池来达到这样的效果...
分类:
编程语言 时间:
2016-04-26 19:58:17
阅读次数:
191
LocatedFileStatusFetcher通过多线程的方式,实现了针对给定输入路径数组,使用配置的线程数目来获取数据块位置的核心功能。它通过google的可监听并发技术ListenableFuture、ListeningExecutorService,实现了两层级别的子任务的并发执行、结果监听与回调处理,还使用了可重入互斥锁ReentrantLock、多线程间协调通信工具Condition来解决多线程之间的并发同步问题,特别是主任务线程与子任务线程间的主从协调、通信等。...
分类:
其他好文 时间:
2016-04-20 16:27:44
阅读次数:
209