上一页 1 2 3 4 5 6 7 8 ··· 20 下一页

2017年10月24日

摘要: 生产者和消费者模式 生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发中,若生产者处理的速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完才能继续生产数据。同理,若消费者的处理能力大于生产者,那么消费者就必须等待生产者。生产者和消费者模式通过一个容器来解决生产者和消费者的 阅读全文
posted @ 2017-10-24 16:41 forever_elf 阅读(184) 评论(0) 推荐(0)
 
摘要: JDK5把工作单元与执行机制分离开。工作单元包括Runnable和Callable,而执行机制由Executor框架提供。 在HotSpot VM的线程模型中,Java线程被一对一映射为本地操作系统线程。Java线程启动时会创建一个本地操作系统线程;当该Java线程终止时,这个操作系统线程也会被回收 阅读全文
posted @ 2017-10-24 14:41 forever_elf 阅读(168) 评论(0) 推荐(0)

2017年10月23日

摘要: 在并发中,使用线程池的好处有3个: 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗 提高响应速度。当任务到达时,任务可以不需要等待线程创建就能立即执行 提高线程的可管理性。 线程池的原理 线程池判断核心线程池里的线程是否都在执行任务。若不是,则创建一个新的工作线程来执行任务。若核 阅读全文
posted @ 2017-10-23 15:48 forever_elf 阅读(211) 评论(0) 推荐(0)

2017年10月16日

摘要: CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作 当需要解析一个Excel里面有多个sheet数据时,可以使用多线程,每个线程解析一个sheet里的数据。主线程等待所有线程执行完sheet的解析操作。 join用于让当前执行线程等待join线程执行结束 阅读全文
posted @ 2017-10-16 12:36 forever_elf 阅读(238) 评论(0) 推荐(0)
 
摘要: java.util.concurrent.atomic包一共提供了13个类。属于4种类型的原子更新方式,分别是原子更新基本类型,原子更新数组,原子更新引用和原子更新属性。Atomic包里的类基本都是使用Unsafe实现的包装类。 原则更新基本类型 AtomicBoolean:原子更新布尔类型 Ato 阅读全文
posted @ 2017-10-16 10:34 forever_elf 阅读(2013) 评论(0) 推荐(0)

2017年10月13日

摘要: ConcurrentHashMap 在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率近100%。因为多线程会导致HashMap的Entry链表形成环形数据结构,一旦形成环形数据结构,Entry的next节点永远不为空,会死循环的获取Entry。 HashTable使用s 阅读全文
posted @ 2017-10-13 16:21 forever_elf 阅读(369) 评论(0) 推荐(0)

2017年10月11日

摘要: Lock接口 锁是用来控制多个线程访问共享资源的方式,锁能够防止多个线程同时访问共享资源。在Lock接口出现之前,Java是靠synchronized关键字实现锁功能的。在Java SE5后,并发包中新增了Lock接口用来实现锁功能,Lock在使用时需要显式地获取和释放锁。虽然缺少隐式获取锁和释放锁 阅读全文
posted @ 2017-10-11 12:12 forever_elf 阅读(195) 评论(0) 推荐(0)

2017年9月27日

摘要: 现代操作系统在运行一个程序时,会为其创建一个进程。现代操作系统调度的最小单元是线程,也叫轻量级进程(Light Weight Process)。在一个进程里可以创建多个线程,这些线程都拥有各自的程序计数器,堆栈和局部变量等属性,并能够访问共享的内存变量。 使用多线程原因: 1. 更多的处理器核心 线 阅读全文
posted @ 2017-09-27 16:59 forever_elf 阅读(246) 评论(0) 推荐(0)

2017年9月22日

摘要: 在命令式编程中,线程之间通信机制有两种:共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过发送消息来显式进行通信。 同步是指程序中用于控制不同线程间操作发生相对顺序的机制。在 阅读全文
posted @ 2017-09-22 09:49 forever_elf 阅读(149) 评论(0) 推荐(0)

2017年9月19日

摘要: Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码转化为汇编指令在CPU上执行。Java中的并发机制依赖于JVM的实现和CPU的指令。 Java语言规范第三版中对volatile的定义如下:Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的 阅读全文
posted @ 2017-09-19 18:44 forever_elf 阅读(350) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 20 下一页