博客专栏  >  编程语言   >  Java并发编程

Java并发编程

主要介绍Java多线程编程的原理、使用,以及线程池的使用,让我们的代码更高效

关注
1 已关注
25篇博文
  • 并发编程——线程安全性

    可以在多个线程中调用,并且线程间不会出现额外的错误交互 当多个线程访问某个类时,不管运行环境采用何种调度方式或者线程如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行...

    2015-03-15 11:30
    400
  • Java中volatile关键字的作用

    在Java内存模型中,有main memory(主内存)还每个线程各自的线程内存memory(例如:寄存器)。为了性能一个线程会在自己memory中保持要访问变量的副本。这样就会出现同一个变量在某一个...

    2015-05-07 22:39
    459
  • 史上最全synchronized用法详解

    Java中synchronized关键字用于代码的同步执行,他可以修饰代码块、方法、this、Object.class,能够保证在多线程环境中只有线程执行。synchronized作用范围越小并发能力...

    2017-05-11 18:00
    234
  • 深入synchronized原理详解

    synchronized作用在方法上时,锁住的便是对象实例(this);当作用在静态方法时锁住的便是对象对应的Class实例,因为Class数据存在于永久代,因此静态方法锁相当于该类的一个全局锁;当s...

    2017-05-12 12:34
    157
  • 深入剖析Sleep、wait、notify、notifyAll、yield、join、Interrupt

    sleep原理sleep是Thread类中的静态方法,首先看下sleep的源码/** * Causes the currently executing thread to sleep (te...

    2017-05-13 11:14
    145
  • Java多线程的上下文切换

    对于上下文切换不同的操作系统模式也不尽相同,这里我们只讨论Unix系统,在我之前的文章中提到过windows的抢占式,这里就不在赘述。 无论是单核还是多核CPU都是支持多线程代码的,CPU通过给每个...

    2017-05-13 18:26
    234
  • Java多线程死锁与资源限制详解

    锁是个非常有用的工具,运用场景非常多,因为它使用起来非常简单,而且易于理解。但同时它也会带来一些困扰,那就是可能会引起死锁,一旦产生死锁,就会造成系统功能不可用。死锁的概念那什么是死锁呢?所谓死锁: ...

    2017-05-13 21:46
    370
  • Java多线程volatile详解

    volatile定义Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁要更加方便。...

    2017-05-14 11:06
    160
  • Java多线程中的内存模型

    内存模型在Java中,所有实例域、静态域和数组元素都存储在堆内存中,堆内存在线程之间共享。局部变量(Local Variables),方法定义参数(Java语言规范称之为Formal Method P...

    2017-05-14 19:35
    373
  • Java多线程并发中的双重检查锁定与延迟初始化

    双重检查锁定与延迟初始化在Java多线程程序中,有时候需要采用延迟初始化来降低初始化类和创建对象的开销。双重检查锁定是常见的延迟初始化技术。 下面我们看一个非线程安全的延迟初始化对象的例子:publ...

    2017-05-15 18:18
    198
  • ThreadLocal详解

    ThreadLocal,即线程变量,是一个以ThreadLocal对象为键、任意对象为值的存储结构。这个结构被附带在线程上,也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上...

    2017-05-16 18:30
    210
  • 数据库连接池原理详解与自定义连接池实现

    实现原理数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数制约。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最...

    2017-05-17 18:18
    206
  • 线程池原理详解与Java代码示例

    为什么使用线程池对于服务端的程序,经常面对的是客户端传入的短小(执行时间短、工作内容较为单一)任务,需要服务端快速处理并返回结果。如果服务端每次接受到一个任务,创建一个线程,然后进行执行,这在原型阶段...

    2017-05-18 18:13
    199
  • Java线程并发中的锁——Lock(上)

    Lock接口锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。在Lock接口出现之前,Java程序是...

    2017-05-19 18:17
    238
  • Java线程并发中的锁——Lock(下)

    接上篇文章独占式同步状态获取与释放通过调用同步器的acquire(int arg)方法可以获取同步状态,该方法对中断不敏感,也就是由于线程获取同步状态失败后进入同步队列中,后续对线程进行中断操作时,线...

    2017-05-20 11:27
    221
  • Java线程并发中的锁——ReentrantLock(重入锁)原理详解

    ReentrantLock是一个重入锁,可以支持一个线程对资源重复加锁,他还支持公平加锁和非公平加锁。synchronized关键字也隐式的支持重进入,比如一个synchronized修饰的递归方法,...

    2017-05-20 18:32
    267
  • Java多线程读写锁ReentrantReadWriteLock原理详解

    ReentrantLock属于排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许多个线程访问,但是在写线程访问时,所有的读和其他写线程都被阻塞。读写锁维护了一对锁,一个读锁和一...

    2017-05-21 11:58
    321
  • Java多线程Condition接口原理详解

    Condition接口提供了类似Object的监视器方法,与Lock配合可以实现等待/通知模式,但是这两者在使用方式以及功能特性上还是有差别的 Condition接口详解Condition定义了等待...

    2017-05-21 19:15
    226
  • ConcurrentHashMap原理详解

    ConcurrentHashMap是既高效又线程安全的HashMapHashTable和ConcurrentHashMap区别HashTable容器使用synchronized来保证线程安全,但在线程...

    2017-05-22 21:30
    283
  • Java并发中的ConcurrentLinkedQueue源码分析

    本文中多次提到CAS算法,先做个CAS算法的简单描述CAS(非阻塞算法)说明CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都...

    2017-05-23 21:42
    1719

Windows C/C++/C# 编程
1306387647
FFmpeg
1353648969
经典算法研究
323273630
微软面试100题系列
183181991
Java开发进阶
663048450
img博客搬家
img撰写博客
img专家申请
img意见反馈
img返回顶部