摘要: 1 基本信息 每个开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。Java的类加载机制是技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是对其背后的机理有一定理解有助于排查程序中出现的类加载失 阅读全文
posted @ 2016-04-21 21:56 空心菜小手 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 基本概念: Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常。 Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用 阅读全文
posted @ 2016-04-20 22:00 空心菜小手 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 基本概念 ThreadLocal提供了线程局部 (thread local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段 阅读全文
posted @ 2016-04-20 21:20 空心菜小手 阅读(147) 评论(0) 推荐(1) 编辑
摘要: 一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。 例如 阅读全文
posted @ 2016-04-20 21:18 空心菜小手 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者 消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就 阅读全文
posted @ 2016-04-20 10:56 空心菜小手 阅读(7285) 评论(0) 推荐(1) 编辑
摘要: 原子性就是指该操作是不可再分的。 java.util.concurrent.atomic中有一组使用无锁算法实现的原子操作类。AtomicInteger、AtomicBoolean、AtomicLong 外还有 AtomicReference 。它们分别封装了对整数、整数数组、长整型、长整型数组和普 阅读全文
posted @ 2016-04-20 09:55 空心菜小手 阅读(7133) 评论(0) 推荐(0) 编辑
摘要: Volatile关键字最大的特点是,在多线程中保持变量的可见性。这个可见性主要是指变量在主存中的可见性。因此,有必要了解java内存模型。 java内存模型 java中每个线程有一块工作内存区,存放着被所有线程共享的主内存中的变量的值的拷贝。一个线程可以执行的操作有:使用(use)、赋值(assig 阅读全文
posted @ 2016-04-20 08:53 空心菜小手 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 为何有了synchronized还要有Lock synchronized只有等当前线程执行完,才能释放锁,或者虚拟机出错时释放资源。 synchronized可能造成其它线程长时间的等待,比如获取锁的线程在执行耗时的IO操作,那么其它需要该资源的线程只能长时间的等待。 synchronized无法知 阅读全文
posted @ 2016-04-19 21:13 空心菜小手 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。 一.什么时候会出现线程安全问题 在单线程中不会出现线程安全问题,而在 阅读全文
posted @ 2016-04-19 17:07 空心菜小手 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 线程的概念 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的 阅读全文
posted @ 2016-04-19 10:29 空心菜小手 阅读(211) 评论(0) 推荐(0) 编辑