java并发编程
文章平均质量分 92
kingkyrie
学以致用,顺势而为!
展开
-
Java 并发:并发背景
原作地址:http://blog.csdn.net/justloveyou_/article/details/53448157摘要: 并发与操作系统的生命历程息息相关。进程的出现,使得程序状态的保存变为现实,为进程间的切换提供了可能,实现了操作系统的并发,大大提高资源利用率。虽然进程的出现解决了操作系统的并发问题,但人们对实时性又有了更高的要求。由于一个进程由若干个子任务组成,所以人们就发明了线转载 2018-01-18 10:52:31 · 109 阅读 · 0 评论 -
Java 之 JUC
原作地址:https://www.cnblogs.com/linkworld/p/7819270.html1. JUC 简介在 Java 5.0 提供了 java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常用的工具类,用于定义类似于线程的自定义子系统,包括线程池,异步 IO 和轻量级任务框架;还提供了设计用于多线程上下文中的 Collection 实现等;2. ...转载 2018-03-13 23:21:09 · 736 阅读 · 0 评论 -
Java高效并发之乐观锁悲观锁、(互斥同步、非互斥同步)
转载自:https://blog.csdn.net/truelove12358/article/details/54963791乐观锁和悲观锁首先我们理解下两种不同思路的锁,乐观锁和悲观锁。这两种锁机制,是在多用户环境并发控制的两种所机制。下面看百度百科对乐观锁和悲观锁两种锁机制的定义:乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大...转载 2018-04-07 20:47:10 · 214 阅读 · 0 评论 -
java实现线程间通信的四种方式
原文:https://blog.csdn.net/Hadwin1991/article/details/73527835本文主要针对JAVA多线程中线程之间的通信方式进行分析解释,主要以代码结合文字的方式来讨论线程间的通信。synchronized同步public class MyObject { synchronized public void methodA() { ...转载 2018-04-07 21:19:31 · 646 阅读 · 0 评论 -
Java线程的5种状态及切换
java中的线程的生命周期大体可分为5种状态。1. 新建(NEW):新创建了一个线程对象。2. 可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。3. 运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代...转载 2018-04-07 23:14:31 · 137 阅读 · 0 评论 -
高并发下线程安全的单例模式(最全最经典)
原文:目录(?)[+]在所有的设计模式中,单例模式是我们在项目开发中最为常见的设计模式之一,而单例模式有很多种实现方式,你是否都了解呢?高并发下如何保证单例模式的线程安全性呢?如何保证序列化后的单例对象在反序列化后任然是单例的呢?这些问题在看了本文之后都会一一的告诉你答案,赶快来阅读吧!什么是单例模式?在文章开始之前我们还是有必要介绍一下什么是单例模式。单例模式是为确保一个类只有一个实例,并为整个...转载 2018-04-07 11:34:59 · 16143 阅读 · 3 评论 -
java并发编程--Executor框架
原文:https://www.cnblogs.com/MOBIN/p/5436482.html摘要: Eexecutor作为灵活且强大的异步执行框架,其支持多种不同类型的任务执行策略,提供了一种标准的方法将任务的提交过程和执行过程解耦开发,基于生产者-消费者模式,其提交任务的线程相当于生产者,执行任务的线程相当于消费者,并用Runnable来表示任务,Executor的实现还提供了对生...转载 2018-04-19 16:31:00 · 99 阅读 · 0 评论 -
java主线程等待所有子线程执行完毕在执行(1)
原文:https://blog.csdn.net/u011277123/article/details/54015755java主线程等待所有子线程执行完毕在执行,这个需求其实我们在工作中经常会用到,比如用户下单一个产品,后台会做一系列的处理,为了提高效率,每个处理都可以用一个线程来执行,所有处理完成了之后才会返回给用户下单成功,下面就说一下我能想到的方法,欢迎大家批评指正:用sleep方法,让主...转载 2018-04-19 18:28:08 · 643 阅读 · 0 评论 -
java主线程等待所有子线程执行完毕在执行(2)
原文:https://www.cnblogs.com/jsunday/p/3782874.html工作总往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的场景, 这时候就需要使用线程了. 一个线程启动之后, 是异步的去执行需要执行的内容的, 不会影响主线程的流程, 往往需要让主线程指定后, 等待子线程的完成. 这里有几种方式. 站在主线程的角度, ...转载 2018-04-19 18:29:20 · 4624 阅读 · 0 评论 -
为什么引入Executor线程池框
为什么引入Executor线程池框架new Thread()的缺点每次new Thread()耗费性能 调用new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪。 不利于扩展,比如如定时执行、定期执行、线程中断采用线程池的优点重用存在的线程,减少对象创建、消亡的开销,性能佳 可有效控制最大并发线程数,提高系统资源的使用率,同...转载 2018-04-19 22:40:13 · 140 阅读 · 0 评论 -
高并发(十五)实现一个简单的读-写锁(共享-排他锁)
https://blog.csdn.net/hupoling/article/details/54947818读写锁是数据库中很常见的锁,又叫共享-排他锁,S锁和X锁。读写锁在大量读少量写的情况下有很高的效率优势。读写锁是基于普通的互斥锁构建出来的更复杂的锁,它有两个基本特点:1. 当任一线程持有读锁或写锁时,不允许其他线程再持有写锁2. 当任一线程持有写锁时,不允许其他线程再持有...转载 2018-08-13 22:10:08 · 811 阅读 · 0 评论 -
全面理解Java内存模型(JMM)及volatile关键字
http://blog.csdn.net/javazejian/article/details/72772461 版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/72772461 出自【zejian的博客】关联文章:深入理解Java类型信息(Class对象)与反射机制...转载 2018-10-19 22:38:44 · 117 阅读 · 0 评论 -
ExecutorCompletionService分析及使用
当我们通过Executor提交一组并发执行的任务,并且希望在每一个任务完成后能立即得到结果,有两种方式可以采取:方式一:通过一个list来保存一组future,然后在循环中轮训这组future,直到每个future都已完成。如果我们不希望出现因为排在前面的任务阻塞导致后面先完成的任务的结果没有及时获取的情况,那么在调用get方式时,需要将超时时间设置为0Java代码pu...转载 2019-04-03 00:15:16 · 267 阅读 · 0 评论 -
ThreadPoolExecutor使用详解
ThreadPoolExecutor机制一、概述1、ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务;2、Executors方法提供的线程服务,都是通过参数设置来实现不同的线程池机制。3、先来了解其线程池管理的机制,有助于正确使用,避免错误使用导致严重故障。同时可...转载 2019-04-03 00:20:21 · 272 阅读 · 0 评论 -
java的两种同步方式, Synchronized与ReentrantLock的区别
原作地址:http://blog.csdn.net/chenchaofuck1/article/details/51045134 java在编写多线程程序时,为了保证线程安全,需要对数据同步,经常用到两种同步方式就是Synchronized和重入锁ReentrantLock。相似点: 这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了...转载 2018-03-13 22:17:52 · 365 阅读 · 0 评论 -
20180313-task
https://www.cnblogs.com/linkworld/p/7819270.html原创 2018-03-12 23:28:20 · 136 阅读 · 0 评论 -
java编译后的文件出现xx$1.class的原因
java编译后的文件名字带有$接数字的就是匿名内部类的编译结果,接名字的就是内部类的编译结果例如:TestFrame$1.class是匿名内部类的编译结果,TestFrame$MyJob.class则是内部类MyJob编译后得到的.使用内部类可以隐藏一些实现的细节, 等等, 还有其他一些好处. 使用匿名类的时候, 要注意代码的可读性。比如该类编译后会生成:TestCompareAndSwap.cl...原创 2018-03-12 23:02:22 · 1134 阅读 · 0 评论 -
Java 并发:volatile 关键字解析
原作地址:http://blog.csdn.net/justloveyou_/article/details/53672005摘要: 在 Java 并发编程中,要想使并发程序能够正确地执行,必须要保证三条原则,即:原子性、可见性和有序性。只要有一条原则没有被保证,就有可能会导致程序运行不正确。volatile关键字 被用来保证可见性,即保证共享变量的内存可见性以解决缓转载 2018-01-18 22:00:30 · 143 阅读 · 0 评论 -
quartz的多线程并发问题
1、quartz默认是多线程的,如果执行任务的对象不是单例的,则每个线程都会产生任务对象,这些任务对象的同时执行可能会导致并发问题2、quartz.properties配置文件是可以自己建的,建好后通过scheduler = new StdSchedulerFactory(QUARTZ_CONFIG_PATH).getScheduler();即可生成按照自己配置文件配置的Scheduler3、co...转载 2018-02-11 10:09:14 · 11018 阅读 · 0 评论 -
Java高并发,如何解决,什么方式解决
原作地址:http://www.cnblogs.com/lr393993507/p/5909804.html对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧。为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和...转载 2018-03-07 21:16:25 · 167 阅读 · 0 评论 -
深入分析java线程池的实现原理
简书 占小狼 转载请注明原创出处,谢谢!2017/04/23 于复兴中路裸心社回头看看之前写的这篇文章,印象中读源码的兴趣源头似乎来自于Java线程池,当山头被一座一座攻克时,你会发现掉到一个大坑中,因为不懂的领域的实在太多。快关注我的公众号!前言线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配、调...转载 2018-03-14 20:28:26 · 148 阅读 · 0 评论 -
java 显式锁ReentrantLock使用详解之条件对象
(1) ReentrantLock的条件对象通常,线程进入临界区,却发现在某一条件满足之后才能执行,条件对象就是用来管理那些已经获得了锁,但是却不能做有用工作的线程。一个锁对象可以有一个或多个相关的条件对象,我们可用lock.newCondition()方法获得一个条件对象。[java] view plain copy ReentrantLock myLock = new ReentrantLoc转载 2018-03-14 21:29:10 · 515 阅读 · 0 评论 -
关于notify()和notifyAll()区别的最简洁的代码
转自: http://wangacidlemon.iteye.com/blog/398623wait()方法表示,放弃当前对资源的占有权,等啊等啊,一直等到有人通知我,我才会运行后面的代码。 notify()方法表示,当前的线程已经放弃对资源的占有, 通知等待的线程来获得对资源的占有权,但是只有一个线程能够从wait状态中恢复, 然后继续运行wait()后面的语句; notifyAll()方法表示转载 2018-03-09 21:52:51 · 303 阅读 · 0 评论 -
《深入理解java虚拟机》之内存模型与安全
不同的平台,内存模型是不一样的,但是jvm的内存模型规范是统一的。其实java的多线程并发问题最终都会反映在java的内存模型上,所谓线程安全无非是要控制多个线程对某个资源的有序访问或修改。总结java的内存模型,要解决两个主要的问题:可见性和有序性。(所以学好JVM至关重要啊啊啊)我们都知道计算机有高速缓存的存在,处理器并不是每次处理数据都是取内存的。JVM定义了自己的内存模型,屏蔽了底层平台内...转载 2018-03-10 10:19:32 · 142 阅读 · 0 评论 -
java线程安全总结(一)
原作大神地址: http://www.iteye.com/topic/806990/最近想将java基础的一些东西都整理整理,写下来,这是对知识的总结,也是一种乐趣。已经拟好了提纲,大概分为这几个主题: java线程安全,java垃圾收集,java并发包详细介绍,java profile和jvm性能调优 。慢慢写吧。本人jameswxx原创文章,转载请注明出处,我费了很多心血,多谢了。关于jav...转载 2018-03-10 10:24:40 · 114 阅读 · 0 评论 -
java线程安全总结(二)
关于线程安全总结(-)请看http://www.iteye.com/topic/806990 ,发该贴后,很多朋友都发站内消息问我一些问题,我把回复整理成一篇帖子。敬请高人手下留情,小可谢过了。 站内很多人都问我,所谓线程的“工作内存”到底是个什么东西?有的人认为是线程的栈,其实这种理解是不正确的。看看JLS(java语言规范)对线程工作 内存的描述,线程的working memo...转载 2018-03-10 10:26:04 · 89 阅读 · 0 评论 -
Servlet的多线程和线程安全
线程安全 首先说明一下对线程安全的讨论,哪种情况我们可以称作线程安全? 网上对线程安全有很多描述,我比较喜欢《Java并发编程实战》给出的定义,“当多个线程访问某个类时,不管运行时环境采用何种调度方式,或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的”。Servlet的调用过程和生命周期 Servlet的生命周...转载 2018-03-10 16:20:50 · 155 阅读 · 0 评论 -
浅析tomcat nio 配置
注:Tomcat 8.5 and 9.0 have completely dropped the BIO connector, default is NIO.Tomcat 6.X实现了JCP的Servlet 2.5和JSP2.1的规范,并且包括其它很多有用的功能,使它成为开发和部署web应用和web服务的坚实平台。 NIO (No-blocking I/O)从JDK 1.4起,NIO ...转载 2018-03-17 17:50:21 · 1078 阅读 · 0 评论 -
线程池的RejectedExecutionHandler(拒绝策略)
JAVA为多线程场景提供了线程池,下面是一个线程池的构造方法:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ...转载 2019-04-03 00:21:32 · 372 阅读 · 1 评论