并发编程
文章平均质量分 84
多线程,并发
william_cr7
你只有十分努力,才能配得上你的梦想!
展开
-
聊一聊JUC同步队列AQS
聊一聊JUC同步队列AQS1. 同步队列AQS1.1 AQS是什么?1.2 AQS实现原理1.2.1 Node节点1. 同步队列AQS1.1 AQS是什么?AbstractQueuedSynchronizer抽象同步队列简称AQS,AQS是一个FIFO的双向队列,通过同步队列来完成对同步状态的管理。它是JUC实现同步器d的重要基础抽象类。1.2 AQS实现原理AQS通过内部的同步队列(...原创 2020-05-03 16:19:32 · 423 阅读 · 0 评论 -
多线程之wait()、notify()和notifyAll()
wait()、notify()和notifyAll()线程本身是操作系统中独立的个体,但是线程与线程之间不是独立的个体,因为它们彼此之间要相互通信和协作。想像一个场景,A线程做int型变量i的累加操作,B线程等待i到了10000就打印出i,怎么处理?一个办法就是,B线程while(i == 10000),这样两个线程之间就有了通信,B线程不断通过轮训来检测i == 10000这个条件。原创 2017-12-08 23:20:36 · 245 阅读 · 0 评论 -
多线程之线程同步问题
线程同步1、为什么要使用线程同步多线程存在并发控制,当多个线程同时访问同一个资源的相同数据进行增删改查,就容易出现数据混乱,造成所得到的数据是脏数据。这时线程不安全,为了时线程安全,采用加锁机制使线程安全,就不会出现数据污染问题。下面以买车票为例说说线程不安全问题:创建Ticket对象,里面有买票的方法。public class Ticket { private stati原创 2017-12-10 15:14:05 · 643 阅读 · 0 评论 -
并发编程之synchronized锁的分析
synchronized锁的原理JDK1.6以后对synchronized锁进行了优化,包含偏向锁、轻量级锁、重量级锁; 在了解synchronized锁之前,我们需要了解两个重要的概念,一个是对象头、另一个是monitor。Java对象头在Hotspot虚拟机中,对象在内存中的布局分为三块区域:对象头、实例数据和对齐填充;Java对象头是实现synchronized的锁对象的基础,一...原创 2019-03-09 22:46:04 · 264 阅读 · 0 评论 -
并发编程之AQS实现分析上篇
1、Lock接口锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。在Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的,而Java SE 5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字类似的同步功能,只是...原创 2019-03-11 23:05:14 · 215 阅读 · 0 评论 -
多线程join()与yield()方法总结
public static void main(String[] args) {HelloThread th = new HelloThread(); th.setName("HelloThread线程"); th.setPriority(5); th.start(); for (int i = 0; i < 100; i++) {...原创 2019-07-30 14:43:52 · 747 阅读 · 1 评论