- 博客(6)
- 资源 (1)
- 收藏
- 关注
原创 并发编程<五>并发处理之synchronized
序言-几个基本概念 在本系列中第四篇文章中已经讲述了并发产生的不可控结果,和结果不可控的根本原因。现在来说说Java所提供的并发处理方式之一的synchronized关键字。学习synchronized关键字之前,我们需要了解一下一下几个概念。 临界资源 多个线程共同访问的资源我们称之为临界资源。对象锁 synchronized引入了锁的概念,每个对象都有一个锁标记,我们称其为对象
2017-11-13 10:45:39 249
原创 并发编程<四>并发不可预期结果的根本原因
提出问题 说到并发,我们应该给自己提出下面这三个问题: 产生并发的根本原因是什么?会造成什么后果?怎么去控制,处理并发达到我们预期的结果。 提出这三个问题之后,我们慢慢来看看一下几个知识点,这三问题自然迎刃而解。解答上面3个问题之前,我们需要对JVM的内存模型有所了解,在《JVM内存模型》一文中已经将JVM内存模型讲的很清楚了,对JVM内存模型不了解的同学可以先去看看,然后继续本文。
2017-11-09 15:06:51 424
原创 JVM内存模型
之前看了很多JVM相关的文章,资料,写了一篇JVM内存相关的文章,现在回过头来,发现理解又不一样了,故而删除了之前的文章,现在完全根据自己的理解写下本文,JVM相关的文章已经太多了,写得都很好,也都大同小异,这儿权当是给自己梳理一下脑中的乱流了! JVM从大的方向来说将内存分为6个部分:java堆,方法区,虚拟机栈,本地方法栈,程序计数器,直接内存。对于我目前接触的领域跟我目前的开发功底来说,需
2017-11-09 14:23:41 252
原创 并发编程<三>线程实现方式Thread,Runnable
Thread,Runnable的区别 我们创建线程的方式一般来说有两种,首先我们来看看两种启动线程方式的具体实现。 第一种继承Thread类,实现run方法,最后调用start方法启动线程。第二种实现Runnable接口,实现run方法,然后调用Thread的有参构造方法,将Runnable的子类对象作为构造方法的参数创建一个Thread对象,最后调用start方法启动线程。 从
2017-11-08 15:58:21 221
原创 并发编程<一>线程5大状态切换时机分析及sleep,join,wait,notify,notifyAll,yield剖析
线程5大状态分析 上图是线程从创建到消亡的一个切换过程。下面我们简单类分析每一个状态。 新建状态:新建状态具体是指调用new Thread()创建出线程对象,但是还没有调用start方法的这段时间。前面的一篇文章《Java虚拟机剖析之内存区域,内存的溢出,泄漏》一文中有说到,每一个线程都会有自己的私有内存区域。处于新建状态下的线程,此时还未分配系统资源,也即是还没有分配到私有内
2017-11-08 11:05:30 991
原创 并发编程<二>线程中断和线程中断标志
线程中断,interrupt方法 先看代码和输出结果 子线程代码: package com.example; /** * Created by PICO-USER on 2017/11/6. */ public class ThreadA extends Thread { @Override public void run() { su
2017-11-06 15:53:12 772
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人