
JAVA并发编程
JAVA并发编程
pengjunlee
不学自知,不问自晓,古今行事,未之有也。
展开
-
Java NIO使用技巧
通道间直接传输数据transferFrom()FileChannel的transferFrom()方法可以将数据从源通道传输到FileChannel中。RandomAccessFile fromFile = new RandomAccessFile("fromFile.txt", "rw");FileChannel fromChannel = fromFile.getCh...转载 2019-12-27 17:24:52 · 196 阅读 · 0 评论 -
真正理解NIO
目录前言什么是NIOIO和NIO的区别NIO的核心实现通道Channel缓存Buffer缓冲区常用的操作Selector参考文章前言高并发量引起的问题。一个使用传统阻塞I/O的系统,如果还是使用传统的一个请求对应一个线程这种模式,一旦有高并发的大量请求,就会有如下问题:线程不够用, 就算使用了线程池复用线程也无济于事; 阻塞I/O模式下,会...转载 2019-12-27 11:48:44 · 639 阅读 · 0 评论 -
Buffer之position,limit,capacity
一、前言熟悉NIO的人想必一定不会陌生buffer中position,limit,capacity这三个属性吧,之前在学习的时候遇到一个问题:就是当你先往缓冲区写入一部分数据,然后调用flip()方法,再全部读取完数据,然后再调用flip()方法,此时这三个值的变化是怎样的,研究了一下,决定写下来分享一下。二、正文1、介绍position: 它指的是下一次读取或写入的位置。 li...转载 2019-12-27 11:27:11 · 686 阅读 · 0 评论 -
并发编程-NIO使用
前言上文《从入门到放弃-SpringBoot》SpringBoot源码分析-请求过程中我们了解到,tomcat接收、返回请求的过程都是基于NIO实现的。日常工作中有很多基于NIO的使用,我们知道NIO可以提高系统的并发度,接下来的系列我们来深入学习下NIO,本文先从使用上简单概述。NIO概述NIO即non-blocking(New IO),是指jdk1.4 及以上版本里提供的新api。...转载 2019-12-27 10:55:49 · 308 阅读 · 0 评论 -
ReentrantLock中公平锁和非公平锁的区别
目录背景知识ReentrantLock的组成概述公平锁示意图非公平锁示意图源码解读非公平锁公平锁代码对比问题知识扩展tryLock方法参考资料背景知识ReentrantLock的组成首先看下ReentrantLock的组成结构。公平锁和非公平锁主要是通过内部类FairSync和NonFairSync中的tryAquire()方...转载 2019-12-26 17:51:02 · 1545 阅读 · 0 评论 -
Java多线程 -- 公平锁和非公平锁的一些思考
在java的锁机制中,公平和非公平的参考物是什么,个人而言觉得是相对产生的结果而立,简单的来说,如果一个线程组里,能保证每个线程都能拿到锁,那么这个锁就是公平锁。相反,如果保证不了每个线程都能拿到锁,也就是存在有线程饿死,那么这个锁就是非公平锁。本文围绕ReenTrantLock来讲。实现原理那如何能保证每个线程都能拿到锁呢,队列FIFO是一个完美的解决方案,也就是先进先出,java的...转载 2019-12-26 17:38:28 · 391 阅读 · 0 评论 -
Java中的Unsafe
目录获取Unsafe主要功能普通读写读写一个Object属性的相关方法Unsafe还可以直接在一个地址上读写volatile读写有序写入直接内存操作CAS相关偏移量相关线程调度类加载内存屏障Java和C++语言的一个重要区别就是Java中我们无法直接操作一块内存区域,不能像C++中那样可以自己申请内存和释放内存。Java中的Unsafe类为我...转载 2019-12-26 17:07:43 · 177 阅读 · 0 评论 -
Java并发编程--volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来...转载 2019-12-16 11:03:03 · 300 阅读 · 0 评论