文章分类 - 并发编程
摘要:一、线程池的实现原理 线程池的处理流程如下: 1)线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一个新的工作线程来执行任务。如果核心线程池里的线程都在执行任务,则进入下个流程。 2)线程池判断工作队列是否已经满。如果工作队列没有满,则将新提交的任务存储在这个工作队列里。如果工作队列满
阅读全文
摘要:Java从JDK 1.5开始提供了java.util.concurrent.atomic包(以下简称Atomic包),这个包中的原子操作类提供了一种用法简单、性能高效、线程安全地更新一个变量的方式。 在Atomic包里一共提供了13个类,属于4种类型的原子更新方式,分别是原子更新基本类型、原子更新数
阅读全文
摘要:一、Lock接口 Java SE 5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字类似的同步功能,只是在使用时需要显式地获取和释放锁 使用synchronized关键字将会隐式地获取锁,但是它将锁的获取和释放固化了,也就是先获取再释放。当然
阅读全文
摘要:一、线程简介 1.1 什么是线程 1.2 为什么要使用多线程 (1)更多的处理器核心 (2)更快的响应时间 (3)更好的编程模型 1.3 线程优先级 在Java线程中,通过一个整型成员变量priority来控制优先级,优先级的范围从1~10,在线程构建的时候可以通过setPriority(int)方
阅读全文
摘要:一、java内存模型的基础 1.1 并发编程模型的两个关键问题 线程之间如何通信及线程之间如何同步。 在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递 在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。在消息传递的并发模型里,线程之间没有公共状态
阅读全文
摘要:一、上下文切换 CPU通过时间片分配算法来循环执行任务。在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换 二、如何减少上下文切换 无锁并发编程: 多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来
阅读全文
摘要:一、volatile 1.1 volatile概述 定义:java允许线程访问共享变量,为确保共享变量能被准确且一致的更新,线程应确保通过排他锁单独获得这个变量。java提供volatile,在某些情况下比锁更方便。如一个字段被声明成volatile,java线程内存模型确保所有线程看到这个变量的值
阅读全文

浙公网安备 33010602011771号