Java并发_Tag标签_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
当前位置:程序员俱乐部 >>Tag标签 >> Java并发 >>列表
· java并发相关发布时间:2017-10-21
Condition:http://www.jianshu.com/p/be2dc7c878dc... 查看全文
· 需要记在脑子里的java并发知识发布时间:2017-02-24
项目中用到并发的地方不多,一次是多个规则线程并发校验文档,一个是多个并发监控应用,比较简单,但查找并发资料后,发现有更好的方式。于是抽空想全面了解并发,可查到网上相关并发的技术文章很多,但是对我来说有这些问题:有的只讲一个技术点有的代码多缺少理解有的层次不够深所以自己总结一下了,不是百科全书也不是字典,只是一定知识的索引,需要记在脑子里的。此次汇总的目标:对并发常用的东西有个概念对并发的基本例子心中有数对并发的原理,甚至设计思想有所理解这些汇总的东西都是需要记住的... 查看全文
鸟欲高飞先振翅,人求上进先读书。本文是原书的第9章线程的监控及其日常工作中如何分析里的9.3.3节常见的内存溢出的三种情况。3.常见的内存溢出的三种情况:1)JVMHeap(堆)溢出:java.lang.OutOfMemoryError:JavaheapspaceJVM在启动的时候会自动设置JVMHeap的值,可以利用JVM提供的-Xmn-Xms-Xmx等选项可进行设置。Heap的大小是YoungGeneration和TenuredGeneraion之和。在JVM中如果98%的时间是用于GC... 查看全文
· Java并发编程之volatile的理解发布时间:2016-10-18
Java并发编程之volatile关键字的理解Java中每个线程都有自己的工作内存,类比于处理器的缓存,线程的工作内存中保存了被该线程使用到的变量的主内存的拷贝。线程读写变量都是直接在自己的工作内存中进行的,而何时刷新数据(指将修改的结果更新到主存或者把主存的变量读取覆盖掉工作内存中的值)是不确定的。volatile关键字是修饰字段的关键字,貌似是JDK1.5之后才有的,在多线程编程中,很大的几率会用到这个关键字,volatile修饰变量后该变量有这么一种效果:线程每一次读该变量都是直接从主存... 查看全文
JavaSE5的java.util.concurrent包中的执行器(Executor)将为你管理Thread对象,从而简化了并发编程。Executor在客户端和执行任务之间提供了一个间接层,Executor代替客户端执行任务。Executor允许你管理异步任务的执行,而无须显式地管理线程的生命周期。Executor在JavaSE5/6中时启动任务的优选方法。Executor引入了一些功能类来管理和使用线程Thread,其中包括线程池,Executor,Executors... 查看全文
publicclassNoVisibility{privatestaticbooleanready;privatestaticintnumber;privatestaticclassReaderThreadextendsThread{publicvoidrun(){while(!ready){Thread.yield();System.out.println(number);}}//endrun()}//endClassReaderThreadpublicstaticvoidmain... 查看全文
· Java并发编程学习笔记(1)发布时间:2015-01-24
线程安全的代码本质上是管理队状态的访问,而且是共享/可变的状态.一个对象的状态就是它的数据,存在状态变量中,还包括了任何会对它外部可见行为产生影响的数据.共享:一个变量被对个线程访问可变:变量的值会在其生命周期内可以改变线程安全性的实质是在不可控制的并发访问中保护数据一个对象是否应该是线程安全的取决于它是否会被多个线程访问.线程安全的性质取决于程序中如何使用对象,而非对象完成了什么保证对象的线程安全性需要使用同步来协调对其可变状态的服务.若多余一个线程访问某个变量,某线程还会修改其值... 查看全文
· Java并发编程学习笔记(2)发布时间:2015-01-24
构建块在实践中,委托是创建线程安全类最有效的策略之一:只需要用已有的线程安全类来观礼所有状态即可。平台类库包含一个并发构建块的丰富集合。比如线程安全容器和多种同步工具(synchronizer:用来调节相互协作的线程间的一些控制流)同步容器同步容器类包括2部分:一个是Vector+HashTable,一个是它们的同系容器。在JDK1.2时才被加入的同步包装类(Wrapper),这些类中Collections.synchronizedXXX工厂方法创建的,这些类通过封装它们的状态... 查看全文
· Java并发编程学习笔记(3)发布时间:2015-01-24
8应用线程池有些类型的任务需要明确指定一个执行策略,如依赖性任务、采用线程限制的任务,对响应时间敏感的任务、使用ThreadLocal的任务。(只有当线程本地thread_local()值的生命周期被限制在当前任务种时,在池的某线程中使用ThreadLocal才有意义;在线程池中,不应该使用ThreadLocal传递任务间的数值)当任务都是同类的、独立时,线程池才有最佳的工作表现。8.1线程饥饿死锁在线程池中,如果一个任务依赖于其他任务的执行,就可能产生死锁。如... 查看全文
· Java并发编程学习笔记(4)发布时间:2015-01-24
第三部分:活跃度、性能和测试10避免活跃度危险如果所有线程以通用的固定秩序获得锁,程序就不会出现顺序锁死锁问题了。当调用的方法不需要持有锁时,这被称为是“开放调用”。依赖于开放调用的类会具有更好的行为,并且比那些需要获得锁才能调用的方法相比,更容易与其他类合作。在程序中尽量使用开放调用,依赖于开放调用的程序,相比于那些在持有锁时还调用外部方法的程序,更容易执行死锁自由度的分析。10.2避免和诊断死锁10.2.1尝试定时锁另一项监测死锁和从死锁中恢复的技术... 查看全文
· Java并发包中的几种ExecutorService发布时间:2015-01-23
1.CachedThreadPoolCachedThreadPool首先会按照需要创建足够多的线程来执行任务(Task)。随着程序执行的过程,有的线程执行完了任务,可以被重新循环使用时,才不再创建新的线程来执行任务。我们采用《ThinkingInJava》中的例子来分析。首先,任务定义如下(实现了Runnable接口,并且复写了run方法):Java代码packagenet.jerryblog.concurrent;publicclassLiftOffimplementsRunnable... 查看全文
· java并发中锁的应用发布时间:2014-11-14
锁的理解锁产生于多线程并发应用,其作用是解决共享对象的同步同时也可以控制线程的行为。我认为锁不仅仅限于synchronize,ReentrantLock,ReadWriteLock.同时也包括CountDownLack,FutureTask,Semaphore,CyclicBarrier,Exchanger这些平时接触不多的并发控制类。后者经常会用在控制线程的运行行为。1.CountDownLack这种锁经常用来控制多个线程同时启动,并且能够及时感知这些线程是否全部运行结束。举例如下... 查看全文
俗话说“工欲善其身,必先利其器”。要想编写好的多线程并发系统,就必须要有一些好的封装类来作为我们的sychironizitonaid。java.util.concurrent包下面就有许多封装好了的类用来帮助我们写好多线程并发系统的新工具。一,原子类:java.util.concurrent.atomicAtomicInteger,AtomicLong,AtomicBoolean,AtomicReference。它们的语义基本上和volatile一样,只不过封装在一个API了... 查看全文
· Java并发完整教程发布时间:2014-10-02
TableofContents1什么是并发问题。2java中synchronized的用法3Java中的锁与排队上厕所。4何时释放锁?5Lock的使用6利用管道进行线程间通信7阻塞队列8使用Executors、Executor、ExecutorService、ThreadPoolExecutor9并发流程控制10并发3定律11由并发到并行1什么是并发问题。多个进程或线程同时(或着说在同一段时间内)访问同一资源会产生并发问题。银行两操作员同时操作同一账户就是典型的例子。比如A... 查看全文
· 常见的Java并发面试基础问题发布时间:2014-09-24
下面介绍一些常见的Java并发面试基础问题。1.什么是原子操作?在JavaConcurrencyAPI中有哪些原子类(atomicclasses)?原子操作是指一个不受其他操作影响的操作任务单元。原子操作是在多线程环境下避免数据不一致必须的手段。int++并不是一个原子操作,所以当一个线程读取它的值并加1时,另外一个线程有可能会读到之前的值,这就会引发错误。为了解决这个问题,必须保证增加操作是原子的,在JDK1.5之前我们可以使用同步技术来做到这一点。到JDK1.5,java.util... 查看全文
· 构建Java并发模型框架发布时间:2014-06-25
Java的多线程特性为构建高性能的应用提供了极大的方便,但是也带来了不少的麻烦。线程间同步、数据一致性等烦琐的问题需要细心的考虑,一不小心就会出现一些微妙的,难以调试的错误。另外,应用逻辑和线程逻辑纠缠在一起,会导致程序的逻辑结构混乱,难以复用和维护。本文试图给出一个解决这个问题的方案,通过构建一个并发模型框架(framework),使得开发多线程的应用变得容易。基础知识Java语言提供了对于线程很好的支持,实现方法小巧、优雅。对于方法重入的保护,信号量(semaphore)和临界区... 查看全文
1.并发1.1.什么是并发?并发是一种能并行运行多个程序或并行运行一个程序中多个部分的能力。如果程序中一个耗时的任务能以异步或并行的方式运行,那么整个程序的吞吐量和可交互性将大大改善。现代的PC都有多个CPU或一个CPU中有多个核。是否能合理运用多核的能力将成为一个大规模应用程序的关键。1.2.进程vs.线程进程是以独立于其他进程的方式运行的,进程间是互相隔离的。一个进程无法直接访问另一个进程的数据。进程的资源诸如内存和CPU时间片都是由操作系统来分配。线程又被称为轻量级进程... 查看全文
5.1.3隐藏迭代器看容器源代码更清楚些java线程包的分析:1.锁,原子操作--进行同步(内存一致性和原子性)2.阻塞--阻塞有哪些实现3.怎么管理锁,管理阻塞,管理线程.管理锁:Lock(对Sync进行了封装)ReadWriteLock,synchronized(最简单的管理)LockCondition参考:http://duming115.iteye.com/blog/830357Condition除了Object.wait()notify()...功能,就是一个命名标志... 查看全文
· java_thread java并发编程实践发布时间:2014-04-25
3.1.3加锁和可见性3.1.4volatile变量比synchronized更轻量级(中文翻译的根本看不懂,以下是自己翻译和理解)WhenthreadAwritestoavolatilevariableandsubsequentlythreadBreadsthatsamevariable... 查看全文
· Java并发编程总结发布时间:2014-03-26
Executors?这是一种任务分解。任务提供者和执行者?在本线程内完成,或者交给专门的Executor去执行。BlockingQueue?常用的工具类,用于数据流分解?读取阻塞,插入阻塞(可选)?ArrayBlockingQueue–FIFO,有上限?LinkedBlockingQueue–FIFO,可能有上限?PriorityBlockingQueue–按优先次序... 查看全文