- 博客(11)
- 资源 (18)
- 收藏
- 关注
原创 java并发包下的LockSupport
java.util.concurrent.locks.LockSupport 概念:用LockSupport来实现线程的阻塞和唤醒。 阻塞线程的方法: public static void park():阻塞当前线程,只有调用unpark()方法或者当前线程被中断,该方法才会返回。 public static void parkNanos(long nanos) publ
2017-10-30 23:27:10 793
原创 java并发包中的Lock
Lock接口:实现:Lock接口的实现是通过聚合了一个同步器的子类来完成线程访问控制的。Lock与synchronized的区别Lock显示地获取和释放锁: void lock(); // 获取锁。 void unlock(); // 释放锁。 可以非阻塞的获取锁: boolean tryLock(); // 调用该方法后立刻返回,如果能获取到锁则返回true,否则返回false; 可以中断地获取锁: void lockInterruptibly() throws Int
2017-10-30 23:21:31 974
原创 java中的队列同步器AQS -- AbstractQueuedSynchronizer
1)原理: 1)使用一个int成员变量表示同步状态(private volatile int state;),通过同步队列(一个FIFO双向队列)来完成同步状态的管理(即:线程的排队)。 2)当前线程获取同步状态失败时,同步器会将当前线程以及等待状态等信息构造成为一个节点(Node)并将其加入到同步队列的尾部,并且当前线程(因进行自旋操作)被阻塞。 3)首节点是成功获取到同步状态的节点,首
2017-10-23 21:30:55 646
原创 java中的线程池
Java中的线程池【1】使用线程池的好处: 1)降低资源消耗,通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 2)提高响应速度,当任务到达时,任务可以不需要等到线程创建就能立即执行。 3)提高线程的可管理性。 说明:不同的业务,我们一般会使用不同的线程池,以便于对同一业务的线程进行统一管理:(日志)监控、线程池参数调优。【2】构造方法: public Threa...
2017-10-16 22:33:37 426
原创 top命令
概念:top命令是Linux下常用的系统性能分析工具,能实时查看系统中各个进程资源占用情况。参数: -p 指定进程号 eg:top -p PID 查看进程ID为PID的进程 -H 查看各个线程资源占用的情况。 eg:top 查看各个进程 资源占用的情况。 top -H 查看各个线程 资源占用的情况。 top -Hp PID 查看进程ID为PID的进程中 所有线...
2017-10-09 22:32:21 1360
原创 java内存模型中的happens-before
java内存模型中的happens-before 1)概念:JMM用happens-before的概念来指定两个操作之间的执行顺序,这两个操作可以在一个线程内,也可以在不同线程之间,并且保证了内存的可见性。 2)happens-before的定义: 1)从程序员的角度看: 如果一个操作happens-before另一个操作,那么第一个操作的执行结果将对第二个操作可见,而且第一个
2017-10-09 22:31:32 508
原创 java中常用的并发工具
java中常用的并发工具1)闭锁CountDownLatch 功能:让一个主线程等待一组工作线程执行完毕之后,才继续执行主线程,与join()方法的功能类似。 原理: 1)CountDownLatch是通过一个计数器来实现的,计数器的初始值为需要等待线程的数量。eg:CountDownLatch c = new CountDownLatch(2); // 等待线程的数量为2
2017-10-09 22:28:51 579
原创 采用延迟初始化来降低初始化类和创建对象的开销
在Java多线程程序中,有时候需要采用延迟初始化来降低初始化类和创建对象的开销。CASE: public class Singleton{ private static Singleton instance = null; private Singleton(){ // 将构造函数私有化 } public static Singleton ge
2017-10-09 22:26:42 1235
原创 多线程中两个必要的开销:线程的创建、上下文切换
多线程中两个必要的开销:线程的创建、上下文切换上下文切换: 概念: 当前任务执行一个时间片后会切换到下一个任务。在切换之前,上一个任务的状态会被保存下来,下次切换回这个任务时,可以再加载这个任务的状态,任务从保存到再加载的过程就是一次上下文切换。 说明: 1)时间片是CPU分配给各个线程的时间,时间片一般是几十毫秒。 2)CPU通过给每个线程分配CPU时间片,并且不停地切...
2017-10-09 22:25:39 5676
原创 CAS(Compare and Swap)算法
CAS(Compare and Swap)算法: 1)原理: 1)CAS有3个操作数,内存值V,预期值(旧值)A,要写入的新值B。 2)当且仅当 预期值A=内存值V 时,将内存值V修改为新值B,否则什么都不做。 3)CAS可以看作是一种乐观锁。 2)应用:用于管理对共享数据的并发访问。 3)CAS存在的问题: 1)ABA问题:如果一个变量的值原来是A,然...
2017-10-09 22:02:44 993
原创 java对象的内存布局
HotSpot虚拟机中,对象在内存中的布局分为三块区域:对象头、实例数据和对齐填充。1)对象头:包括标记字段和类型指针两部分内容(注:如果是数组对象,则包含三部分内容): 1)Mark Word(标记字段):用于存储运行时对象自身的数据。 1>占用内存大小与虚拟机位长一致,在运行期间,考虑到JVM的空间效率,Mark Word被设计成为一个非固定的数据结构,以便存储更多有效的数据。
2017-10-09 21:32:33 1873 1
jQuery1.10.3(中文).chm
2014-12-25
Struts2.0中文教程.chm
2014-12-25
Spring2.5-中文参考手册.chm
2014-12-25
HTTP1.1.chm
2014-12-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人