目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk工具之jstack(Java Stack Trace) 四.jdk工具之jstat命令(Java Virtual Machine Statistics Monitoring Tool) 四.jdk工具之jstat命令2(Java Virtual Machine Statistics Monitori…
一.CyclicBarrier 作用:所有线程准备好才进行,只要一条线程没准备好,都不进行 用法:所有线程准备好以后调用CyclicBarrier的await方法,然后主线程执行CyclicBarrier的countDown方法 实现需求:n个运动员(n个线程),全部准备好了才一起起跑.代码如下 1 package concurrent019; 2 import java.io.IOException; 3 import java.util.Random; 4 import java.util.…
Java Decompiler是一种非常实用的JAVA反编译工具,可以对整个jar包进行反编译,也可以将其集成到eclipse上,非常方便的根据class文件的源码.,官网地址http://jd.benow.ca/,里面有非常详细的介绍. JD-GUI 一种图形界面化的工具,可以直接打开反编译jar文件,效果如下图所示 . JD-Eclipse Java Decompiler的一种eclipse插件,可以按照官网上的方式一步一步安装集成到eclipse上.在这里,给大家介绍一种简单的方式.我这里…
VisualVM 是一款免费的\集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回收器.执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作. 在内存分析上,Java VisualVM的最大好处是可通过安装Visual GC插件来分析GC(Gabage Collection)趋势.内存消耗详细状况. 一  Visual GC(监控垃圾回收器) Java Visu…
静态检查: 静态测试包括代码检查.静态结构分析.代码质量度量等.它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行.代码检查代码检查包括代码走查.桌面检查.代码审查等,主要检查代码和设计的一致性, 代码对标准的遵循.可读性,代码的逻辑表达的正确性,代码结构的合理性等方面:可以发现违背程序编写标准的问题,程序中不安全.不明确和模糊的部分,找出程序中不可移植部分.违背程序编程风格的问题,包括变量检查.命名和类型审查.程序逻辑审查.程序语法检查和程序结构检查等内容.”.看了一系列的…
新学期伊始,我心中既充满了期待和希望,又有些许激动和感慨.期待的是即将接触许多新的知识,期待未来比过去过的更加踏实有趣,期待遇到更好的人和事等等.当然,面对从未了解过的新事物时,我想每个人的想法都大致相同吧!一周的学习时间过去了,我对java的了解也是初步的,下面我将我的学习经历以及我对java的理解分享给大家. 一.历史 在1991年时候,James Gosling在sun公司的工程师小组想要设计这样一种小型计算机语言.该语言主要用于像电视盒这样的消费类电子产品,这些电子产品有一个共同的特点:…
笔者使用websocket进行通信,服务器异步返回.websocket服务器又异步调用其他websocket,也是异步访问. 由于无法预测服务器调用第三方websocket什么时候调用结束,使用了CountDownLatch. 每次报错都如下: java.lang.reflect.InvocationTargetException: null at sun.reflect.GeneratedMethodAccessor419.invoke(Unknown Source) at sun.refle…
报错 java.lang.NoClassDefFoundError: io/netty/channel/AbstractChannel$AbstractUnsafe$ at io.netty.channel.AbstractChannel$AbstractUnsafe.deregister(AbstractChannel.java:) at io.netty.channel.AbstractChannel$AbstractUnsafe.fireChannelInactiveAndDeregist…
一.描述线程的类:Runable和Thread都属于java.lang包 二.内置锁synchronized属于jvm关键字,内置条件队列操作接口Object.wait()/notify()/notifyAll()属于java.lang包 二.提供内存可见性和防止指令重排的volatile属于jvm关键字 四.而java.util.concurrent包(J.U.C)中包含的是java并发编程中有用的一些工具类,包括几个部分: 1.locks部分:包含在java.util.concurrent.…
java.util.concurrent并发包中提供了一系列的的同步工具类,这些基础类不管是否能在项目中使用到,了解一下使用方法和原理对java程序员来说都是有必要的.博主在看<java并发编程实战>这本书中提到了其中几个工具类,本文就对这些类进行简单的描述. CyclicBarrier(栅栏) 4个朋友约好下班一起玩吃鸡,分别是M4,AWM,SKS,WIN94.这四个哥们下班时间不一样,决定好一个时间一起上号搞. 大家约好到家就开游戏,必须珍惜生命,争分夺秒玩游戏. 我们用栅栏来模仿一下场景…
java.util.concurrent包的类都来自于JSR-166:Concurrent Utilities,官方的描述叫做“The JSR proposes a set of medium-level utilities that provide functionality commonly needed in concurrent programs. ”.作者是大名鼎鼎的Doug Lea,这个包的前身可以在这里找到,它最好的文档就是系统的API手册. 当然,这里参考的concurrent包…
线程池ThreadPoolExecutor的使用 并发容器之CopyOnWriteArrayList 并发容器之CopyOnWriteArraySet 数据结构之ConcurrentHashMap,区别于HashMap的非线程安全,比HashTable更高效 数据结构之ConcurrentSkipListMap java并发之CountDownLatch java并发之Semaphore java并发之CyclicBarrier Exchanger兄弟线程间数据信息交换 Executors类似一…
多线程和java.util.concurrent并发包 转载:…
一 CountDownLatch是什么 CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrier.Semaphore.ConcurrentHashMap 和 BlockingQueue等,它们都存在于java.util.concurrent包下.CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行.例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后再执行. CountDownLatch…
一.基础普及 接口(interface) 类(class) 继承类 实现的接口 Array √ Collection √ Set √ Collection List √ Collection Map √ Collection Vector √ List ArrayList √ List HashMap √ Map Hashtable √ Dictionary Map ConcurrentMap √ Map ConcurrentHashMap   √ ConcurrentMap 二.对比 1.Ha…
一 异步用new Thread? 大写的"low"!! new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 你还在像上面这么用吗,太low 了.弊端多多: 1.  每次new Thread新建对象性能差. 2. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom. 3. 缺乏更多功能,如…
一 CopyOnWrite容器概述 Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略.从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet. CopyOnWrite容器即写时复制的容器.通俗的理解是当我们…
一  引言 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁.释放锁会导致比较多的上下文切换和调度延时,引起性能问题. (2)一个线程持有锁会导致其它所有需要此锁的线程挂起. (3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险. volatile是不错的机制,但是volatile不能保证原子性.因此对于同步最终还是要回到锁机制上来. 独占锁是一种悲观锁,synchroniz…
在JavaSE5中,JUC(java.util.concurrent)包出现了 在java.util.concurrent包及其子包中,有了很多好玩的新东西: 1.执行器的概念和线程池的实现.Executor.ExecutorService框架 从Executor接口开始,到ExecutorService,再到很多基于ThreadPoolExecutor实现的具体执行器.执行器实际上是采用了一种叫做命令模式的设计,将任务Runnable和具体执行线程相分离,并给出了生命周期等管理方法,一般只要e…
15.JDK1.8的Java.util.concurrent.atomic包小结 14.Java中Atomic包的原理和分析 13.java.util.concurrent.atomic原子操作类包 11.java并发之原子性.可见性.有序性  ===== 15.JDK1.8的Java.util.concurrent.atomic包小结 Atomic意为原子的,JUC包又是并发包,所以不必多说. Atomic的特点 ①多线程环境下,无所的进行原子操作. ②不能绝对保证线程不被阻塞.(因不同CPU…
java.util.concurrent是JDK自带的一个并发的包主要分为以下5部分: 并发工具类(tools) 显示锁(locks) 原子变量类(aotmic) 并发集合(collections) Executor线程执行器 我们今天就说说 并发集合,除开 Queue,放在线程池的时候讲 先介绍以下 CopyOnWrite: Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy…
Java 并发包中的高级同步工具 Java 中的并发包指的是 java.util.concurrent(简称 JUC)包和其子包下的类和接口,它为 Java 的并发提供了各种功能支持,比如: 提供了线程池的创建类 ThreadPoolExecutor.Executors 等: 提供了各种锁,如 Lock.ReentrantLock 等: 提供了各种线程安全的数据结构,如 ConcurrentHashMap.LinkedBlockingQueue.DelayQueue 等: 提供了更加高级的线程同…
原文地址:http://blog.csdn.net/windsunmoon/article/details/36903901 概述 Java.util.concurrent 包含许多线程安全.测试良好.高性能的并发构建块.不客气地说,创建java.util.concurrent 的目的就是要实现 Collection 框架对数据结构所执行的并发操作.通过提供一组可靠的.高性能并发构建块,开发人员可以提高并发类的线程安全.可伸缩性.性能.可读性和可靠性. 此包包含locks,concurrent,…
软件包 java.util.concurrent 的描述 在并发编程中很常用的实用工具类.此包包括了几个小的.已标准化的可扩展框架,以及一些提供有用功能的类,没有这些类,这些功能会很难实现或实现起来冗长乏味.下面简要描述主要的组件.另请参阅 locks 和 atomic 包. 执行程序 接口.Executor 是一个简单的标准化接口,用于定义类似于线程的自定义子系统,包括线程池.异步 IO 和轻量级任务框架.根据所使用的具体 Executor 类的不同,可能在新创建的线程中,现有的任务执行线程中…
简介: 在 JDK 5.0 之前,如果不使用本机代码,就不能用 Java 语言编写无等待.无锁定的算法.在 java.util.concurrent 中添加原子变量类之后,这种情况发生了变化.请跟随并行专家 Brian Goetz 一起,了解这些新类如何使用 Java 语言开发高度可伸缩的无阻塞算法.您可以在本文的 论坛中与作者或其他读者共享您对本文的看法.(也可以通过单击文章顶部或者底部的 讨论链接来访问讨论.) 十五年前,多处理器系统是高度专用系统,要花费数十万美元(大多数具有两个到四个处理…
闭锁是一种同步工具类,可以延迟线程的进度直到闭锁到达终止状态. 闭锁的作用相当于一扇门,在闭锁到达结束状态之前,这扇门一直是关闭的,任何线程都不能通过这扇门,当闭锁到达结束状态时,这扇门会打开并允许所有线程通过. 当闭锁到达结束状态后,将不会再改变状态,这扇门将永远保持打开状态. java.util.concurrent.CountDownLatch即是一个闭锁实现,其内部包含一个计数器,该计数器被初始化为一个整数,表示需要等待事件的数量. countDown方法递减计数器计数,如果计数到达0,…
这是Ted Neward在IBM developerWorks中5 things系列文章中的一篇,仍然讲述了关于Java并发集合API的一些应用窍门,值得大家学习.(2010.06.17最后更新) 摘要:除了便于编写并发应用的集合API外,java.util.concurrent还引入了其它的预置程序组件,这些组件能辅助你在多线程应用中控制和执行线程.Ted Neward再介绍了五个来自于java.util.concurrent的Java编程必备窍门. 通过提供线程安全,性能良好的数据结构,并发…
                                                            这是Ted Neward在IBM developerWorks中5 things系列文章中的一篇,讲述了关于Java并发集合API的一些应用窍门,值得大家学习.(2010.05.24最后更新) 摘要:编写既要性能良好又要防止应用崩溃的多线程代码确实很难--这也正是我们需要java.util.concurrent的原因.Ted Neward向你展示了像CopyOnWriteArr…
一.简介   Exchanger是自jdk1.5起开始提供的工具套件,一般用于两个工作线程之间交换数据.在本文中我将采取由浅入深的方式来介绍分析这个工具类.首先我们来看看官方的api文档中的叙述: A synchronization point at which threads can pair and swap elements within pairs. Each thread presents some object on entry to the exchange method, mat…
java.util.concurrent包分成了三个部分,分别是java.util.concurrent.java.util.concurrent.atomic和java.util.concurrent.lock.内容涵盖了并发集合类.线程池机制.同步互斥机制.线程安全的变量更新工具类.锁等等常用工具. 搜索资源:http://blog.csdn.net/zhgflx/article/details/4485848 AtomicInteger: Java的多线程编程模型5--从AtomicInt…