上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 24 下一页

2018年8月11日

Java并发编程原理与实战二十一:线程通信wait&notify&join

摘要: wait和notify wait和notify可以实现线程之间的通信,当一个线程执行不满足条件时可以调用wait方法将线程置为等待状态,当另一个线程执行到等待线程可以执行的条件时,调用notify可以唤醒等待的线程。需要强调的是,在调用wait和notify时需要先获取锁,否则会抛出IllegalM 阅读全文

posted @ 2018-08-11 20:38 pony1223 阅读(294) 评论(0) 推荐(0) 编辑

Java并发编程原理与实战二十:线程安全性问题简单总结

摘要: 一、出现线程安全性问题的条件 •在多线程的环境下 •必须有共享资源 •对共享资源进行非原子性操作 二、解决线程安全性问题的途径 •synchronized (偏向锁,轻量级锁,重量级锁) •volatile •JDK提供的原子类 •使用Lock(共享锁,排它锁) 三、认识的“*锁” •偏向锁 Jav 阅读全文

posted @ 2018-08-11 20:34 pony1223 阅读(319) 评论(0) 推荐(0) 编辑

Java并发编程原理与实战十九:AQS 剖析

摘要: 一、引言在JDK1.5之前,一般是靠synchronized关键字来实现线程对共享变量的互斥访问。synchronized是在字节码上加指令,依赖于底层操作系统的Mutex Lock实现。而从JDK1.5以后java界的一位大神—— Doug Lea 开发了AbstractQueuedSynchro 阅读全文

posted @ 2018-08-11 20:21 pony1223 阅读(843) 评论(0) 推荐(2) 编辑

2018年8月6日

Java并发编程原理与实战十八:读写锁

摘要: ReadWriteLock也是一个接口,提供了readLock和writeLock两种锁的操作机制,一个资源可以被多个线程同时读,或者被一个线程写,但是不能同时存在读和写线程。 基本规则: 读读不互斥 读写互斥 写写互斥问题: 既然读读不互斥,为何还要加读锁答: 如果只是读,是不需要加锁的,加锁本身 阅读全文

posted @ 2018-08-06 08:25 pony1223 阅读(1798) 评论(0) 推荐(1) 编辑

2018年8月5日

Java并发编程原理与实战十七:AQS实现重入锁

摘要: 一、什么是重入锁 可重入锁就是当前持有锁的线程能够多次获取该锁,无需等待 二、什么是AQS AQS是JDK1.5提供的一个基于FIFO等待队列实现的一个用于实现同步器的基础框架,这个基础框架的重要性可以这么说,JCU包里面几乎所有的有关锁、多线程并发以及线程同步器等重要组件的实现都是基于AQS这个框 阅读全文

posted @ 2018-08-05 17:50 pony1223 阅读(709) 评论(0) 推荐(1) 编辑

Java并发编程原理与实战十六:AQS

摘要: 一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronized(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLo 阅读全文

posted @ 2018-08-05 17:50 pony1223 阅读(271) 评论(2) 推荐(0) 编辑

2018年8月2日

Java并发编程原理与实战十五:手动实现一个可重入锁

摘要: package com.roocon.thread.ta1; 运行结果: 现在来模拟下,基于以上代码,锁是否可重入: 分析以上运行结果: 线程1调用a方法,第一次进入lock方法,去获取锁。此时,isLocked为false,于是将标志锁改为true。然后,输出a。再去执行b方法。此时,再次去调用l 阅读全文

posted @ 2018-08-02 08:04 pony1223 阅读(279) 评论(0) 推荐(0) 编辑

Java并发编程原理与实战十四:Lock接口的认识和使用

摘要: 保证线程安全演进: synchronized volatile AtomicInteger Lock接口提供的方法: void lock():加锁 void unlock():解锁 void lockInterruptibly():在多个线程并发获取锁的时候,那么,当有些线程拿不到锁时会等待,会不停 阅读全文

posted @ 2018-08-02 08:00 pony1223 阅读(273) 评论(0) 推荐(0) 编辑

Java并发编程原理与实战十三:JDK提供的原子类原理与使用

摘要: 原子更新基本类型 原子更新数组 原子更新抽象类型 原子更新字段 原子更新基本类型: 运行结果: 运行结果: 对CAS的源码理解:--初步理解 在AtomicInteger中有这样一段源码: 其中,compareAndSwap就是CAS的缩写。如果prev和next不相等,则返回true。否则,返回f 阅读全文

posted @ 2018-08-02 07:57 pony1223 阅读(239) 评论(0) 推荐(0) 编辑

2018年7月27日

Java并发编程原理与实战十二:深入理解volatile原理与使用

摘要: volatile:称之为轻量级锁,被volatile修饰的变量,在线程之间是可见的。 可见:一个线程修改了这个变量的值,在另一个线程中能够读取到这个修改后的值。 synchronized除了线程之间互斥之外,还有一个非常大的作用,就是保证可见性。以下demo即保证a值的可见性。 首先来看demo: 阅读全文

posted @ 2018-07-27 00:12 pony1223 阅读(423) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 24 下一页

导航