Java多线程
文章平均质量分 55
飞火流云
这个作者很懒,什么都没留下…
展开
-
idea多线程同时断点模式
idea断点默认阻塞所有线程,如果需要多线程同时停留在断点处,需要开启idea的断点的All->Thread模式原创 2022-05-21 08:59:30 · 1272 阅读 · 0 评论 -
Java实现动态配置-教学案例
package dynamicConfiguration;/* *主类(author by qiangliu) */public class DynamicClassTest { public static void main(String[] args) { Configutaion conf = new Configutaion(System.getProperty("u...原创 2020-03-12 21:12:36 · 904 阅读 · 0 评论 -
C语言复习
不同C文件函数引用的方法:一、从一个源文件里调用另一个源文件的函数。在源文件A1.c中调用A2.c 中的函数有两种方法:1、在A2.c中有完整的函数定义,在A1.c中添加一下要用到的函数原型(声明)就可以了,例如:在A2.c中:有函数void A2(){...};。在A1.c中:在文件前头增加一行:void A2();就可以了,实际上是默认省略了extern 关键字~2、把A2...转载 2019-11-04 11:03:10 · 124 阅读 · 0 评论 -
我见过的关于notify()和notifyAll()区别的最简洁的代码
转自: http://wangacidlemon.iteye.com/blog/398623wait()方法表示,放弃当前对资源的占有权,等啊等啊,一直等到有人通知我,我才会运行后面的代码。 notify()方法表示,当前的线程已经放弃对资源的占有, 通知等待的线程来获得对资源的占有权,但是只有一个线程能够从wait状态中恢复, 然后继续运行wait()后面的语句;转载 2014-03-17 11:33:13 · 10059 阅读 · 11 评论 -
关于线程对象没有及时销毁
public class ThreadTT extends Thread{ public int i = 0 ; public ThreadTT(int iu){ i =iu ; } /** * @param args */ public static void main(String[] args) {原创 2014-12-14 19:03:27 · 1800 阅读 · 0 评论 -
Java IO开销测试比较
package ringBuffer;import java.io.BufferedWriter;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.RandomAcce原创 2015-02-08 19:43:27 · 633 阅读 · 0 评论 -
JVM性能调优
、性能调优的步骤1.1、衡量系统现状包括请求次数、响应时间、资源消耗等;如:A系统目前95%的请求响应为1s。1.2、设定调优目标根据用户所能接受的响应速度、系统现有的机器、所支撑的用户量制定出来的,因此通常会设定调优目标:95%的 请求在500ms内返回。1.3、寻找性能瓶颈在【2、寻找性能瓶颈】会专门介绍。通常性能瓶颈的表像是:1.3.1转载 2015-02-21 22:46:37 · 731 阅读 · 0 评论 -
为什么Java程序占用的内存比实际分配给它的要多
转自: http://www.oschina.net/question/100267_65544很多人错误的认为运行Java程序时使用-Xmx和-Xms参数指定的就是程序将会占用的内存,但是这实际上只是Java堆对象将会占用的内存。堆只是影响Java程序占用内存数量的一个因素。要更好的理解你的Java程序将会占用多大的内存需要先了解有哪些因素会影响到内存的占用。这些因素包括:对转载 2015-02-21 22:35:44 · 2504 阅读 · 0 评论 -
Java性能调优笔记
转自: http://www.cnblogs.com/litaobupt/articles/2952386.html调优步骤:衡量系统现状、设定调优目标、寻找性能瓶颈、性能调优、衡量是否到达目标(如果未到达目标,需重新寻找性能瓶颈)、性能调优结束。寻找性能瓶颈性能瓶颈的表象:资源消耗过多、外部处理系统的性能不足、资源消耗不多但程序的响应速度却仍达不到要求。资源消转载 2015-02-21 23:11:00 · 745 阅读 · 0 评论 -
线程的一些知识点
多线程共享堆空间,栈空间独立,多进程独享堆空间和栈空间。锁池和等待池如图所示:假设一个线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁,同时线程A就进入到了该对象的等待池中。如果另外的一个线程调用了相同对象的notifyAll()方法,那么处于该对象的等待池中的线程就会全部进入该对象的锁池中,准备争夺锁的拥有权。哪个线程最终能争取到锁由操作系统决定。解决死锁的方原创 2015-02-26 16:17:30 · 412 阅读 · 0 评论 -
堆和栈的区别(转过无数次的文章)
转载: 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据转载 2015-02-26 17:11:15 · 391 阅读 · 0 评论 -
java nio 之MappedByteBuffer
转自: http://blog.csdn.net/mgoann/article/details/3345850其实掌握MappedByteBuffer并不难,只要记住“三方三法三特性”(我自己总结的,呵呵~~不要扔鸡蛋哦。。。)这句话就可以轻松搞定!MappedByteBuffer 只是一种特殊的 ByteBuffer ,即是ByteBuffer的子类。 MappedByteBuf转载 2015-02-06 14:56:07 · 430 阅读 · 0 评论 -
聊聊JVM的年轻代
转自: http://ifeve.com/jvm-yong-generation/1.为什么会有年轻代我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分转载 2015-02-03 11:13:31 · 558 阅读 · 0 评论 -
线程Sleep不放弃锁
package thread;public class MockTest { public static void main(String[] args) { Test t1 = new Test() ; t1.run() ; for(int k=0;k<5;k++){ t1.addA() ;// try { System.out.println(" Mai原创 2014-12-09 15:09:26 · 2428 阅读 · 0 评论 -
Java-序列化、持久化和压缩
1. 序列化的作用 将对象变成一串字节流 不用序列化能否保存磁盘上? 可以,但是你要将对象中一个个的基本属性进行写入操作,比如int之流. 序列化和持久化之间的关系 序列化过程是持久化的一种方式。 Java序列化的过程就是将对象按照Java约定的序列化方式变成一串字节流,当然大家都知道那是很烂的。。。。 序列化和压缩的目的原创 2014-05-27 12:35:54 · 2599 阅读 · 0 评论 -
关于同一个文件两次调用CDC切片的结果不同的问题
package inputCompare;import inputCompare.chunk.Chunk;import inputCompare.chunk.TttdChunker;import inputCompare.chunk.TttdChunker.TTTDEnumeration;import java.io.File;import java.io.IOException;原创 2014-08-04 17:39:26 · 831 阅读 · 1 评论 -
HashSet和TreeSet
转自: http://www.cnblogs.com/beyondwcm/archive/2007/11/08/953440.html转载 2014-09-24 16:22:21 · 547 阅读 · 0 评论 -
Memcache, BDB ,mongoDB
一、概念Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。二、适用场合1.分布式应用。由于memcached本身基于分布式的系统,所以尤其适合大型的分布式系统。2.数据库前段缓存。数据库常常是网站系统的瓶颈。数据库的大并发量访问,常常造成网站内存溢出。当然我们也可原创 2014-11-15 15:44:29 · 646 阅读 · 0 评论 -
关于HashMap的使用问题
/*** 常规思路:求两个无向图邻接表交集,前一种方法过于复杂.不对顶点序号做出改变,直接混合两个邻接表,然后执行相对的顶点序号修改,* 同样能够保持两个文件顶点一一对应的关系,* 但是新增顶点就会散布在新生成的混合文件内,需要进行对比找出,相比下这种方法更符合常规思路,直接把邻接表作为参数,复用时会有问题!!!!!改成文件名! 还有就是并发异常!* * @param src原创 2014-10-15 18:02:14 · 606 阅读 · 0 评论 -
【MongoDB for Java】Java操作MongoDB
转自: http://www.cnblogs.com/hoojo/archive/2011/06/02/2068665.html转载 2014-11-07 11:28:34 · 525 阅读 · 0 评论 -
jstat用法详解
1. jstat -gc pid 可以显示gc的信息,查看gc的次数,及时间。 其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。 2.jstat -gccapacity pid 可以显示,VM内存中三代(you转载 2014-12-17 17:10:09 · 594 阅读 · 0 评论 -
深入理解OutOfMemoryError
转自 http://it.deepinmind.com/java/2014/02/24/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3OutOfMemoryError.html深入理解OutOfMemoryError当堆栈跟踪信息里面出现OutOfMemoryError的时候,你应该很清楚发生了什么。应用程序由于没有足够的内存空间所以挂了。知道转载 2014-12-18 20:26:02 · 1145 阅读 · 0 评论 -
sleep不放弃锁,wait放弃实例
/** * Thread sleep和wait区别 * @author DreamSea * 2012-1-15 */public class ThreadTest implements Runnable { int number = 10; public void firstMethod() throws Exception { synchroniz转载 2014-12-09 15:47:39 · 3176 阅读 · 0 评论 -
关于一个GC回收内存总量的疑问
package ringBuffer;import java.io.BufferedWriter;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.OutputS原创 2015-02-12 17:29:10 · 1228 阅读 · 0 评论 -
GC日志分析
转自: http://blog.csdn.net/yxc135/article/details/12137663 首先,给出一个日志输出的例子:参数设置为:-XX:+PrintGCDetails -XX:-UseAdaptiveSizePolicy -XX:SurvivorRatio=8 -XX:NewSize=10M -XX:MaxNewSize=10M参数解释:转载 2015-02-16 20:33:42 · 699 阅读 · 0 评论 -
linux下Java执行jar包命令
jar需设置Main类java -jar XXX.jar原创 2015-09-23 16:31:32 · 3011 阅读 · 0 评论 -
Java 中Double型和double的取整:intValue是去尾取整,负的向上,正的向下,Math.floor才是真的向下取整
public class Double2Int { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub double d = 5.5; int i = (int)d;原创 2013-10-15 10:10:33 · 39093 阅读 · 4 评论 -
ConcurrentHashMap(CHM)要点总结
1. Map根据并发级别一般默认为16个并发度,即最多16个线程写,同时存在其他读线程,因此读的结果可能不是最新的,同时每个segment使用RetreeenLock加锁,因此可以根据并发的线程数在构造时设置并发级别。2.使用keySet返回的iterator是弱一致性的,即在使用该iterator遍历时如果修改了内容,会报ConcurrentModificationExceptoin异常。...原创 2018-08-07 18:30:44 · 422 阅读 · 1 评论 -
JVM调优之jstack找出最耗cpu的线程并定位代码
转自: https://www.cnblogs.com/chengJAVA/p/5821218.htmljstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。第一步先找出Java进程ID,服务器...转载 2018-09-12 16:40:34 · 159 阅读 · 0 评论 -
类中添加日志打印
利用log4jpackage org.apache.giraph.examples;import java.io.IOException;import org.apache.giraph.edge.Edge;import org.apache.giraph.graph.BasicComputation;import org.apache.giraph.graph.Vertex;...原创 2018-09-23 15:52:06 · 658 阅读 · 0 评论 -
Java类加载器总结
加载器自己的初始化顺序,按照BootstrapClassLoader->Extension ClassLoader ->AppClassLoader的顺序加载,其中BootstrapClassLoader由虚拟机启动后自动初始化,由C++编写,BootstrapClassLoader启动后先后加载Extension ClassLoader(java对象)->AppClassL...原创 2018-09-21 15:17:28 · 131 阅读 · 0 评论 -
Eclipse安装插件长时间停留在calculating requirements and dependencies
如果安装插件的时候,Eclipse花费了很长的时间calculating requirements and dependencies(计算需求和依赖性 )这个问题通常就是在点击安装之后显示“Calculating requirements and dependencies”,然后进度条不动,调出系统监视器会发现压根儿没下载流量,解决方法:1、把“Contact all update site...转载 2018-10-13 18:01:19 · 1010 阅读 · 0 评论 -
java.lang.NoClassDefFoundError错误 ClassNotFoundException vs NoClassDefFoundError
http://www.paraller.com/2018/12/12/NoClassDefFoundError-&-ClassNotFoundException%E6%80%BB%E7%BB%93/最近一个应用程序A,引入了一个二方包 xxx-common.jar, 能够正常运行。 然后应用B也引用了这个二方包,部署启动也都正常,但是使用 xxx-common.jar 的一个类的静态方...转载 2019-03-31 18:50:10 · 735 阅读 · 0 评论 -
动态代理
简单的说,有A类,现在希望在A类的函数print()中增加Log类的功能log(),但是不能修改A类源码,因为用户手中只有A类的.class文件,于是提供了动态代理的方法,即新建一个动态代理类A_proxy继承A类,同时新建一个处理类InLog继承InvocationHandler, 然后重写InLog的invoke函数,首先增加log()的功能,然后调用method.invoke()激发prin...原创 2019-04-21 16:21:51 · 113 阅读 · 0 评论 -
Java 编程常见错误
总结下自己常犯错误,留备.1.数组对象没有初始化.String[] hosts = new String[5] ;否则分配时会因为数组对象没有指向的堆内存报空指针错误.原创 2015-09-14 10:33:34 · 414 阅读 · 0 评论 -
JVM内存分配分析之一
JVM内存分配分析之一本问题正式讨论见于帖子htt:/// :例子1:public class MemoryTest { int[] a = new int[0] ; public void set(){ a = new int[10] ; for(int i =0;i<10;i++)原创 2015-09-01 13:24:35 · 499 阅读 · 0 评论 -
JAVA中JVM的GC日志解析
转自: http://blog.csdn.net/simonchi/article/details/82002370.335: [GC [PSYoungGen: 2213K->736K(18368K)] 2213K->736K(60224K), 0.0014123 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]转载 2015-02-16 20:21:23 · 596 阅读 · 0 评论 -
远程Java多进程调试方法
比如hadoop, 有IsolationRunner, 但是由于很多集群只对外提供一个登陆节点,无法用eclipse 连到具体出问题的节点上进行debug, 有些问题非常诡异,即使查看日志也想不通。 这里的做法是尽可能的讲多个进程合并成一个进程,然后通过在登陆节点上运行该进程,使用java的远程调试来搞定。比如将hdfs的分区大小合并成一个足够大的分区,这样使得任务数只有一原创 2015-05-07 16:40:17 · 882 阅读 · 0 评论 -
Java环形缓冲区+生产消费模型及同步开销测试
代码是为了使用环形缓冲区实现消费者生产者功能:package ringBuffer.parallel;import java.io.IOException;import java.io.RandomAccessFile;import java.util.LinkedHashMap;import java.util.Map;public class Producer { pu原创 2015-02-22 22:30:22 · 1888 阅读 · 0 评论 -
一次奇葩Hama问题记录
对Hama进行改进,引用了一个类A(A继承了线程类),当该类实现如下时,:GraphJobRunner 中 @Override public final void setup( BSPPeer peer) throws IOException, SyncException, InterruptedException { setupF原创 2015-03-06 10:01:42 · 647 阅读 · 0 评论