文章分类 - java
摘要:java 工具包 Mertrics 一. 概述 对业务代码的各个指标进行监控 Metrics能够很好的跟Ganlia、Graphite结合 core包主要提供如下核心功能: Metrics Registries类似一个metrics容器,维护一个Map,可以是一个服务一个实例。 支持五种metric
        阅读全文
            
摘要:一. ScheduleExecutorService配置 说明 注意问题: 我们需要捕获最上层的异常,防止出现异常中止执行,导致周期性的任务不再执行。 如果执行的任务大于我们指定的执行间隔,比如scheduleAtFixedRate方法;当执行任务的时间大于我们指定的间隔时间时,等待任务执行完毕,再
        阅读全文
            
摘要:一.BlockingQueue ArrayBlockingQueue和LinkedBlockingQueue的区别: 1. 队列中锁的实现不同 ArrayBlockingQueue实现的队列中的锁是没有分离的,即生产和消费用的是同一个锁; LinkedBlockingQueue实现的队列中的锁是分离
        阅读全文
            
摘要:LockSupport.park()实现分析 一.成员及方法 可以看出parkBlocker是unsafe的成员 二. park与unpark park 传入的Object对象,用setBlocker创建为一个blocker putObject方法如下: 把线程作为对象传入了Unsafe,unsaf
        阅读全文
            
摘要:一.线程的状态 创建(new) 就绪(runnable) 运行(running) 阻塞(blocked) time waiting waiting 消亡(dead) 创建之后不会立即就绪,需要等待资源分配 就绪后不会立即执行,需要等待分配到cpu时间才能执行,进入运行态 运行过程很多情况导致不能继续
        阅读全文
            
摘要:线程安全的Queue BlockingQueue ConcurrentLinkedQueue BlockingQueue ||可能报异常	|返回布尔值	|可能阻塞 |设定等待时间| | | | | | | |入队 |add(e) |offer(e) |put(e)	|offer(e, timeout
        阅读全文
            
摘要:一. lock方法 ReentrantLock是一种排他锁 共享锁:就是允许多个线程同时获取一个锁,一个锁可以同时被多个线程拥有。 排它锁:也称作独占锁,一个锁在某一时刻只能被一个线程占有,其它线程必须等待锁被释放之后才可能获取到锁。 定义了两种sync NonfairSync FairSync A
        阅读全文
            
摘要:一. 状态成员 ctl线程数量和线程状态 29位以上管理进程状态,29位以下管理线程数量 五种状态的数字,表示他们的运行的先后顺序。 execute() 首先添加woker,如果添加失败了,任务没有启动 疑问:状态为SHUTDOWN,添加的task为null,workQueue非空,难道可以接受整个
        阅读全文
            
摘要:包含一个unsafe,value用于保存值 例子:accumulateAndGet
        阅读全文
            
摘要:一. CAS 对于例子: 如果a++之前,a的值改变了怎么办 CAS可以实现无锁,这样如果a的值被改变了a++就不会被执行 如果想执行a++操作需要while循环 二. java中的CAS 用的Unsafe类的CAS操作完成的 a++操作 ++a操作,只是返回结果不同 ConcurrentLinke
        阅读全文
            
摘要:unsagfe需要补充线程控制的部分 一. 实例化 方式1:运行时加入bootclasspath 方式2:反射 二. API 三. 线程挂起与恢复 将一个线程进行挂起是通过park方法实现的,调用 park后,线程将一直阻塞直到超时或者中断等条件出现。 unpark可以终止一个挂起的线程,使其恢复正
        阅读全文
            
摘要:一. 内存模型 java每个线程具有独立的缓存 线程会把i读到缓存,然后i+1,然后存到主存,多线程时缓存不一致,但是内存中修改的内容是一份。 解决方式: 1. 总线加锁:只有一个线程能够读主存该值 2. 缓存一致性协议:比如MESI机制,通知线程这个缓存无效,在内存重新读取 二. 并发编程中的三个
        阅读全文
            
摘要:枚举编译 创建一个类:FruitEnum继承自java.lang.Enum 定义的枚举被声明为public static final类型常量 FruitEnum$VALUES数组,保存常量APPLE和ORANGE 创建两个对象,常量引用这个两个对象 两个静态方法: values()拷贝一份数组 va
        阅读全文
            
摘要:[toc] java enum(枚举)使用详解 + 总结 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中。 下面是我在使用 enum 过程中的一些经验和总结,主要包括如下内容: 原始的接口定义常量 语法(定义) 创建枚举类型要使用 
        阅读全文
            
摘要:转自:http://www.iteye.com/magazines/132 Java NIO 580 Scalable IO in Java http://www.open open.com/lib/view/open1428072931615.html http://ifeve.com/overv
        阅读全文
            
摘要:一. 接口的默认方法和静态方法 使用两个新概念扩展了接口的含义:默认方法default和静态方法static。 default 抽象方法需要实现,而默认方法不需要。 实现类可以继承或者覆写default方法。 静态方法不可以覆盖。 应用:在jdk1.8中,很多接口添加了新方法,比如:java.uti
        阅读全文
            
摘要:反射的类 java.lang.Class; java.lang.reflect.Constructor; java.lang.reflect.Field; java.lang.reflect.Method; java.lang.reflect.Modifier; 一. 获取类的方法 方法1:Clas
        阅读全文
            
摘要:Executor Executor只有一个execute方法,可以执行Runnable接口。 ExecutorService ExecutorService继承自Executor AbstractExecutorService AbstractExecutorService抽象类实现Executor
        阅读全文
            
摘要:一. 线程安全性 解决线程安全性方式: 不在线程之间共享状态变量 状态变量修改为不可变 访问状态变量使用同步 无状态的对象是线程安全的; 竞态条件:不正确的执行时序产生不正确的结果;
        阅读全文
            
摘要:一. 序列化 把对象持久化,能够进行网络间的进程间通信。 非transient的进行序列化。 序列化的类需要实现Serializable或者Externalizable接口 序列化是先创建ObjectOutputStream,然后调用outputStream.writeObject(person)把
        阅读全文
            
 
                     
                    
                 
                    
                
 
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号