1.Java多线程-认识Java线程2.Java多线程-线程安全3.Java多线程-线程协作4.Java多线程-线程池5.Java多线程-栅栏6.Java多线程-Fork/Join1.1 什么是多线程 计算机的核心硬件有磁盘、内存、CPU,磁盘用来持久化保存数据,CPU用于计算,内存是磁盘和CPU之... ...
分类:
编程语言 时间:
2018-07-03 23:49:46
阅读次数:
134
最近在学习jvm,发现随着对虚拟机底层的了解,对java的多线程也有了全新的认识,原来一个小小的synchronized关键字里别有洞天。决定把自己关于java多线程的所学整理成一篇文章,从最基础的为什么使用多线程,一直深入讲解到jvm底层的锁实现。 多线程的目的 为什么要使用多线程?可以简单的分两 ...
分类:
编程语言 时间:
2018-07-03 14:51:19
阅读次数:
140
前言 这篇主要讲述ThreadPoolExecutor的源码分析,贯穿类的创建、任务的添加到线程池的关闭整个流程,让你知其然所以然。希望你可以通过本篇博文知道ThreadPoolExecutor是怎么添加任务、执行任务的,以及延伸的知识点。那么先来看看ThreadPoolExecutor的继承关系吧 ...
分类:
编程语言 时间:
2018-07-02 14:13:38
阅读次数:
141
多线程数量的问题,一般情况下,多线程数量要等于机器CPU核数-1. 实例1: 解决问题:如何让n个线程顺序遍历含有n个元素的List集合 1 import java.util.ArrayList; 2 import java.util.List; 3 import org.apache.common ...
分类:
编程语言 时间:
2018-07-02 00:14:59
阅读次数:
234
前面我们已经对多线程的基础知识有了一定的了解,那么接下来我们将要对多线程进一步深入的学习;但在学习之前我们还是要对传统的技术进行一次回顾,本章我们回顾的则是:传统线程技术和传统的定时器实现. 一、传统线程技术 1.创建方式 1、继承thread类 2、实现Runnable接口 3、实现Callabl ...
分类:
编程语言 时间:
2018-07-02 00:12:24
阅读次数:
132
今天我们学习的是如何在线程自己的范围内达到变量数据的共享,而各个线程之间又是互相独立开来,各自维护的,即我们说的ThreadLocal的作用。 一、概念 可以将每个线程用到的数据与对应的线程号存放到一个map集合中,使用数据时从这个集合中根据线程号获取对应线程的数据,就可以实现线程范围内共享相同的变 ...
分类:
编程语言 时间:
2018-07-02 00:11:51
阅读次数:
207
本文主要是回顾线程之间互斥和同步,以及线程之间通信,在最开始没有juc并发包情况下,如何实现的,也就是我们传统的方式如何来实现的,回顾知识是为了后面的提高作准备。 一、线程的互斥 为什么会有线程的互斥?可以想银行取款的问题,如果不做监控,多个人同时针对一个存折取钱的时候就会出现钱不对的问题,下面我们 ...
分类:
编程语言 时间:
2018-07-02 00:04:31
阅读次数:
157
Java的volatile关键字在JDK源码中经常出现,但是对它的认识只是停留在共享变量上,今天来谈谈volatile关键字。 volatile,从字面上说是易变的、不稳定的,事实上,也确实如此,这个关键字的作用就是告诉编译器,只要是被此关键字修饰的变量都是易变的、不稳定的。那为什么是易变的呢?因为 ...
分类:
编程语言 时间:
2018-07-01 23:02:55
阅读次数:
204
Java多线程基础——Lock类 转自:https://www.cnblogs.com/qifengshi/p/6354890.html 之前已经说道,JVM提供了synchronized关键字来实现对变量的同步访问以及用wait和notify来实现线程间通信。在jdk1.5以后,JAVA提供了Lo ...
分类:
编程语言 时间:
2018-07-01 16:54:00
阅读次数:
179
public interface ReadWriteLock ReadWriteLock 维护了一对相关的锁,一个用于只读操作,另一个用于写入操作。只要没有 writer,读取锁可以由多个 reader 线程同时保持。写入锁是独占的。 访问约束 ||read|write| |: :|: :|: :| ...
分类:
编程语言 时间:
2018-06-30 17:44:32
阅读次数:
139