在jvm中,线程是一个宝贵的资源,创建与销毁都会抢占宝贵的内存资源,为了有效的重用线程,我们用线程池来管理线程,让创建的线程进行复用。 JDK提供了一套Executor框架,帮助我们管理线程,核心成员如下: 它们都在java.util.concurrent包中,是JDK并发包的核心类,其中,Exec ...
分类:
编程语言 时间:
2017-09-23 20:22:48
阅读次数:
292
Java并发包 一、并发包的结构 java并发包中共分为五类: 1、集合框架:包括队列和并发集合 2、同步辅助类 3、线程池 4、Lock锁 5、原子类 二、详解部分 1、同步辅助类详解部分 (1)CountDownLatch 举例:有三个工作,只有三个工作都完成,任务才算执行完成。 运行结果: 它 ...
分类:
编程语言 时间:
2017-09-07 22:55:26
阅读次数:
152
转载出处http://blog.csdn.net/evankaka 写在前面的话:此文只能说是java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更上一个台阶呢?如果你觉得此文很简单,那推荐你看看Java并发包的的线程池(Java并发编程与技术内幕 ...
分类:
编程语言 时间:
2017-09-06 23:01:41
阅读次数:
262
接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返 ...
分类:
编程语言 时间:
2017-08-31 17:55:03
阅读次数:
119
AQS,在java.util.concurrent.locks包中,AbstractQueuedSynchronizer这个类是并发包中的核心,了解其他类之前,需要先弄清楚AQS。在JUC的很多类中都会存在一个内部类Sync,Sync都是继承自AbstractQueuedSynchronizer,相... ...
分类:
其他好文 时间:
2017-08-30 14:15:34
阅读次数:
176
概述 相信读者在网上也看了非常多关于ThreadLocal的资料,非常多博客都这样说:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路;ThreadLocal的目的是为了解决多线程訪问资源时的共享问题。假设你也这样觉得的。那如今给你10秒钟,清空之前对ThreadLocal的错误的 ...
分类:
编程语言 时间:
2017-08-13 10:03:07
阅读次数:
289
1. 各种同步控制工具的使用 1.1 ReentrantLock ReentrantLock感觉上是synchronized的增强版,synchronized的特点是使用简单,一切交给JVM去处理,但是功能上是比较薄弱的。在JDK1.5之前,ReentrantLock的性能要好于synchroniz ...
分类:
Web程序 时间:
2017-08-11 23:53:36
阅读次数:
365
ReentrantLock是Java并发包中提供的一个可重入的互斥锁。ReentrantLock和synchronized在基本用法,行为语义上都是类似的,同样都具有可重入性。只不过相比原生的Synchronized,ReentrantLock增加了一些高级的扩展功能,比如它可以实现公平锁,同时也可 ...
分类:
其他好文 时间:
2017-07-30 00:56:20
阅读次数:
233
目录 1 基本实现原理 1.1 如何使用 1.2 设计思想 2 自定义同步器 2.1 同步器代码实现 2.2 同步器代码测试 3 源码分析 3.1 Node结点 3.2 独占式 3.3 共享式 4 总结 Java并发包(JUC)中提供了很多并发工具,这其中,很多我们耳熟能详的并发工具,譬如Reent ...
分类:
编程语言 时间:
2017-07-24 14:48:33
阅读次数:
271
一、进程 1、multiprocessing模块实现多进程并发。 1.1multiprocessing包是Python中的多进程管理包,与threading.Thread类似,它可以利用multiprocessing.Process对象来创建一个进程 该进程可以运行在Python程序内部编写的函数, ...
分类:
编程语言 时间:
2017-07-21 01:27:12
阅读次数:
284