java并发编程
z真真
我是咸鱼,我是咸鱼,我是咸鱼!
展开
-
线程、锁
1、线程同步问题操作共享数据时,工作线程会从主存中拷贝一份副本,在自己的栈空间运行,最后再刷新到主存中,此时如果有其它线程操作共享数据,就会存在缓存一致性问题。当然如果这是一种原子性操作,也不会存在线程安全问题。(i++就是一种非原子性操作)造成线程安全问题的因素,一是存在共享数据(临界资源),二是存在多个线程共同操作共享数据。2、锁类型锁机制保证同一时刻只有一个线程操作共享数据,其它线程...原创 2018-11-16 17:10:00 · 218 阅读 · 0 评论 -
Java并发编程
一、共享性对共享变量的操作,在多线程环境下很容易出现各种意想不到的的结果。如果所有的数据只是在线程内有效,那就不存在线程安全性问题。二、互斥性资源互斥是指同时只允许一个访问者对其进行访问,具有唯一性和排它性。我们通常允许多个线程同时对数据进行读操作,但同一时间内只允许一个线程对数据进行写操作。所以我们通常将锁分为共享锁和排它锁,也叫做读锁和写锁。如果资源不具有互斥性,即使是共享资源,我们也...转载 2019-03-29 13:39:48 · 118 阅读 · 0 评论 -
Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)线程的状态转换图对于notify/notifyAll方法的示例,会出现这种结果,很奇怪也就是说notify()通知发出去了,没有线程开始执行。public class JavaTest { public synchronized void testWait() { Syste...原创 2019-03-30 11:26:07 · 213 阅读 · 0 评论 -
Java并发编程:Synchronized
Java并发编程:Synchronized及其实现原理Java并发编程:Synchronized底层优化(偏向锁、轻量级锁)转载 2019-03-30 10:10:48 · 185 阅读 · 0 评论 -
Java 原子性引用 AtomicReference
The AtomicReference class provides reference objects that may be read and written atomically, so when multiple threads try to reach them at the same time, only one will be able to do so.提供了引用变量的读写原子性...原创 2019-01-10 18:49:20 · 550 阅读 · 0 评论 -
线程池的使用和分析jdk1.8
Eexecutor作为灵活且强大的异步执行框架,其支持多种不同类型的任务执行策略,提供了一种标准的方法将任务的提交过程和执行过程解耦开发,基于生产者-消费者模式,其提交任务的线程相当于生产者,执行任务的线程相当于消费者,并用Runnable来表示任务,Executor的实现还提供了对生命周期的支持,以及统计信息收集,应用程序管理机制和性能监视等机制。线程池如何实现线程的复用:通过Blockin...原创 2019-01-10 18:45:27 · 571 阅读 · 0 评论 -
ReentrantLock可重入锁
public class ReentrantLockTest implements Runnable { public static ReentrantLock lock = new ReentrantLock(); public static int i = 0; @Override public void run() { System.out....原创 2019-01-10 18:41:03 · 173 阅读 · 0 评论 -
volatile关键字
你真的了解volatile关键字吗? Java内存模型Java内存模型规定了所有的变量都存储在主内存中。每条线程中还有自己的工作内存ThreadLocal,线程的工作内存中保存了被该线程所使用到的变量(这些变量是从主内存中拷贝而来)。线程对变量的所有操作(读取,赋值)都必须在工作内存中进行。不同线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成。基...转载 2018-06-19 19:17:57 · 138 阅读 · 0 评论 -
Java线程池
文章目录Executors线程池工厂类ThreadPoolExecutor线程池具体实现类线程池状态线程池的关闭提交任务execute(runnable)提交任务添加worker启动任务使用线程池的优点:重用已经创建好的线程,避免频繁创建和销毁的系统开销控制线程并发数,合理使用系统资源,提高应用的性能手动管理线程,比如定时执行、取消执行等Executors线程池工厂类Excutor...原创 2019-09-11 19:12:43 · 188 阅读 · 0 评论