01 2015 档案
摘要:java线程转储java的线程转储可以被定义为JVM中在某一个给定的时刻运行的所有线程的快照。一个线程转储可能包含一个单独的线程或者多个线程。在多线程环境中,比如J2EE应用服务器,将会有许多线程和线程组。每一个线程都有它自己的调用堆栈,在一个给定时刻,表现为一个独立功能。线程转储将会提供JVM中所...
阅读全文
摘要:使用信号量来 限制无边界池子与队列public class BoundedExecutor { private final Executor exec; private final Semaphore semaphore; public BoundedExecutor(E...
阅读全文
摘要:停止基于服务的线程 应用程序通常会创建拥有服务的线程, 比如线程池. 这些服务的存在时间通常要比创建他们的方法存在的时间更长, 如果应用程序优雅的退出了,这些服务的线程也需要结束.因为没有退出线程惯用的优先方法, 他们需要自行结束. 明智的封装实践指出,你不应该操控某个线程一一中断它,改变他的优...
阅读全文
摘要:java.util.Timer计时器有管理任务延迟执行("如1000ms后执行任务")以及周期性执行("如每500ms执行一次该任务")。但是,Timer存在一些缺陷,因此你应该考虑使用ScheduledThreadPoolExecutor作为代替品,Timer对调度的支持是基于绝对时间,而不是...
阅读全文
摘要:并发技巧清单可变状态是至关重要的(It`s the mutable state stupid) . 所有问题都可以归结为如何协调对并发状态的访问. 可变状态越少就越容易确保线程安全性.尽量将域声明为final类型 , 除非他们是可变的.不可变对象一定是线程安全的 不可变对象能极大的降低并发编程的...
阅读全文
摘要:闭锁 一种可以延迟线程的进度直到其到达终止状态.可以用来确保某些活动直到其他活动都完成后才继续执行 例如:确保某个计算在其需要的所有资源都被初始化了之后才继续执行.确保某个服务在其他依赖的服务都启动了之后才开始执行等待某个操作的所有参与者(如LOL) 都就绪了之后再继续执行.锁的实现1.Coun...
阅读全文
摘要:Linux vmstat命令实战详解 vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top...
阅读全文
摘要:局部创建对象(不正确发布:当好对象变坏时)代码清单1:public class StuffIntoPublic { public Holder holder; public void initialize() { holder = new Holder(42...
阅读全文
摘要:CentOS 大量的TIME_WAIT解决方法 最近个人博客总是出现无法打开的现象,具体表现为,打开页面需要等待n长时间,登陆系统后发现系统存在大量TIME_WAIT状态的连接,google了一下解决方法,分享如下:系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,vi /etc/s...
阅读全文
摘要:4.3.4 并发性 选择器对象是线程安全的,但它们包含的键集合不是。通过keys( )和selectKeys( )返回的键的集合是Selector对象内部的私有的Set对象集合的直接引用。这些集合可能在任意时间被改变。已注册的键的集合是只读的。如果您试图修改它,那么您得到的奖品将是一个java.l...
阅读全文
摘要:选择器,可选择通道和选择键类 现在,您也许还对这些用于就绪选择的Java成员感到困惑。让我们来区分这些活动的零件并了解它们是如何交互的吧。图4-1的UML图使得情形看起来比真实的情况更为复杂了。看看图4-2,然后您会发现实际上只有三个有关的类API,用于执行就绪选择:选择器(Selector) ...
阅读全文
摘要:管道Pipe java.nio.channels包中含有一个名为Pipe(管道)的类。广义上讲,管道就是一个用来在两个实体之间单向传输数据的导管。管道的概念对于Unix(和类Unix)操作系统的用户来说早就很熟悉了。Unix系统中,管道被用来连接一个进程的输出和另一个进程的输入。Pipe类实现一个...
阅读全文
摘要:DatagramChannel 最后一个socket通道是DatagramChannel。正如SocketChannel对应Socket,ServerSocketChannel对应ServerSocket,每一个DatagramChannel对象也有一个关联的DatagramSocket对象。不过...
阅读全文