高并发知识总结
java高并发程序设计个人技术总结
19年,重新开始写
求学之路,泛结良师,广交益友
展开
-
java高并发程序设计总结一:走进并行世界
2014年底,就在大家都认为并行计算必然成为未来的大趋势时,在Avoiding ping pong论坛上,Linus Torvalds提出了一个截然不同的观点:“忘掉那该死的并行吧!”(原文:Give it up. The whole”parallel computing is the futrue” is a bunch of crock)忘掉那该死的并行对于并行计算,Linus提出两个特例,那就翻译 2017-10-19 14:49:31 · 453 阅读 · 0 评论 -
java高并发程序设计总结二:java并行程序基础
进程和线程的关系进程的概念:进程是计算机中的程序关于某数据集合的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。进程和线程的关系:简单的来说,进程就是线程的容器,而线程就是轻量级进程,是程序执行的最小单位;使用多线程而不是多进程来进行并发程序的设计,是因为线程间的切换和调度的成本要远远小于进程线程的创建两种基本方式:继承Thread类和实现Runnable接口,下面通过代码来翻译 2017-10-22 00:23:39 · 683 阅读 · 0 评论 -
java高并发程序设计总结三:JDK并发包之ReentrantLock重入锁
为了更好的支持并发程序,jdk内部提供了大量实用的API和框架,重入锁就是一种对同步的扩展ReentrantLock起源在1.5的时候,synchronized关键的性能不是很好,这也是concurrent并发包出现的一种潜在原因,而新出现的ReentrantLock重入锁的性能那时比synchronized好太多,也提供了更加灵活、细粒度的同步操作。(在jdk1.6开始,jdk在synchroni翻译 2017-10-22 13:19:10 · 1052 阅读 · 0 评论 -
java高并发程序设计总结四:JDK并发包之信号量Semaphore
概念信号量是对锁的一种扩展。不管是对于synchronized还是对于ReentrantLock锁来说,一次都只允许一个线程获取锁资源,其余的线程都只能处于等待状态。而信号量可以指定多个线程同时访问某一个资源,包括锁资源Semaphore主要提供了一下两个构造函数public Semaphore(int permits);初始化信号量并指定能同时访问的线程数量public Semaphore(int翻译 2017-10-23 10:41:27 · 819 阅读 · 0 评论 -
java高并发程序设计总结五:jdk并发包其他同步控制工具类:ReadWriteLock/CountDownLatch/CyclicBarrier/LockSupport
读写锁ReadWriteLock之前的博客介绍了synchronized和重入锁ReentrantLock都可以实现线程同步,这两种方式确实实现了线程同步,保证了同时只能有一个线程能获得锁资源。不过他们有一个缺点:多个线程对数据进行读取操作也是需要进行等待的。而这实际上是没必要的,因为读操作不会对数据造成污染。ReadWriteLock的出现优化了这一个缺点:多个线程读不会阻塞,而读写和写写会进行阻翻译 2017-10-23 13:40:27 · 347 阅读 · 0 评论 -
java并发程序设计总结六:线程池
多线程的软件设计方法确实可以最大限度的发挥现代多核处理器的计算能力,但是如果不加控制和管理的随意使用创建线程,对系统的性能反而会产生不利的影响。不适用线程池的线程优化可以使用如下方式来创建线程,他会在run结束之后,自动回收线程资源:new Thread(new Runnable(){ public void run(){ // do something... }}翻译 2017-10-23 20:28:23 · 349 阅读 · 0 评论 -
java并发程序设计总结七:jdk的并发容器
线程安全的HashMap:Collections.synchronizedMap()Collections工具类中提供了一系列synchronizedXxx方法用于包装对应的集合对象成线程安全的。这里就介绍下HashMap:public static <K,V>Map<K,V> synchronizedMap(Map<K,V> m);该方法会生成一个名为synchronizedMap的Map,它使用翻译 2017-10-27 19:46:29 · 499 阅读 · 0 评论