`
headof
  • 浏览: 23492 次
  • 来自: ...
社区版块
存档分类
最新评论
文章列表
ConcurrentLinkedQueue是Queue的一个安全实现.Queue中元素按FIFO原则进行排序.采用CAS操作,来保证元素的一致性. 数据结构为:单向链表. 变量使用volatile修改,保证内在可见性(happens-before,对变量的写操作对后续的读操作是可见的),同样也不会导致CPU指令的重排序. private static class Node<E> { volatile E item; volatile Node<E> next; /** * Const ...
Queue 抛出异常返回特殊值 插入add(e)offer(e) 移除remove()poll() Deque继承Queue(double ended queue(双端队列)) 第一个元素(头部)最后一个元素(尾部)插入addFirst(e)offerFirst(e)addLast(e) offerLast(e) 移除removeFirst()pollFirst()removeLast() pollLast() 检查getFirst() peekFirst()getLast() peekLast() Queue 方法 等效 Deque 方法 add(e) addLast(e) off ...
一.什么是线程安全(what). 一个类是线程安全的,当被多个线程访问时,类可以持续保证行为的正确性. 自增操作看上去是一个单独操作,然而他对于多线程来说并不是线程安全的.这个现象比较容易出现,请参照以下代码. private int a; @Test public void test() throws Exception { CountDownLatch latch = new CountDownLatch(2); Thread t1 = new Thread(new task(latch), "t1"); Thread ...

about ThreadFactory

    博客分类:
  • java
ThreadFactory接口,只有一个public方法 newThread。 继承这个接口,可以自己的ThreadFactory,此例为Thread添加一个自己的前缀。 DaemonThreadFactory /** * */ public class DaemonThreadFactory implements ThreadFactory { // private String prefix; private volatile int threadId; /** * * @param prefix */ ...
FutureTask 仅在计算完成时才能获取结果;如果计算尚未完成,则阻塞 get 方法。一旦计算完成,就不能再重新开始或取消计算。 建立个callable。返回一个string static class nCallable implements Callable<String> { @Override public String call() throws Exception { System.out.println("now,this callable is calculating..."); return "s ...

log4j-loggers

Log4j有三个主要组件,loggers, appenders and layouts. 三个类型的组件通过message type and level 相关协调可以让开发者记录log messages. Logger层 对于logging api超越普通的System.out.println首先也就是最重要的好处他能够禁用某些日志语句,同时允许其他人可以正常print.这种能力假设为loggin space.也就说是所以可能的logging statement的space,是根据一些开发者选择的标准进行分类.这一观察使得我们选择类别作以包的中心开概念.然而,在log4j version1.2 ...
能够有选择性地启用或禁用基于他们的记录器的日志请求只是picture的一部分。Log4j允许loggin请求打印到多个目的地。对于Log4j而言,一个输出的destination称为一个appender,目前,控制台,文件,GUI组件,远程套接字服务器,JMS,NT事件记录器,以及远程UNIX系统日志守护进程是已经存在的appender。它也可以异步log。 logger可以连接多个appender addAppender方法添加一个appender到一个给定的记录器。不但每启用一个给定的logger 记录的请求将被转发到在这个logger所有的appender中而且会在较高的层次appende ...
UncaughtExceptionHandler接口用来捕获运行时未被程序捕获异常. 如下面的例子. for (int i=5;i >=0 ;i--) { int value = 5 / i; System.out.println(value); } 直接在main方法里执行,在console里是不会报错的. 但仔细看一下代码会发现,当i为0时此处代码应该抛ArithmeticException.为何没有,是因为程序中没有任何异常catch. 如果在main方法中加入 Thread.setDefaultUncaughtExceptionHandle ...
一、软件公司项目经理岗位职责 主要职责: 1、 计划: a)项目范围、项目质量、项目时间、项目成本的确认。 b)项目过程/活动的标准化、规范化。 c)根据项目范围、质量、时间与成本的综合因素的考虑,进行项目的总体规划与 ...
Global site tag (gtag.js) - Google Analytics