blog.hongxi.org

专注于Java生态研究,为Java学习者少走弯路。

阻塞队列

在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:...

2018-03-09 17:48:49

阅读数 38

评论数 0

生产环境连接池和线程池配置参考

<bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource"&g...

2018-03-09 17:48:37

阅读数 237

评论数 0

线程间协作的两种方式:wait、notify、notifyAll和Condition

在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临...

2018-03-09 17:48:31

阅读数 41

评论数 0

ConcurrentHashMap

下面这部分内容转载自:   http://www.haogongju.net/art/2350374   JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能。因为同步容器将所有对容器状态的访问都...

2018-03-09 17:48:09

阅读数 48

评论数 0

ConcurrentHashMap完全解析(jdk6/7,8)

并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力,但同时降低了...

2018-03-09 17:48:00

阅读数 78

评论数 0

并发容器之CopyOnWriteArrayList

原文链接:   http://ifeve.com/java-copy-on-write/      Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个...

2018-03-09 17:47:04

阅读数 29

评论数 0

Java线程面试题 Top 50

不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以...

2018-03-09 17:46:31

阅读数 75

评论数 0

Lock

在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。   也许...

2018-03-09 17:45:50

阅读数 36

评论数 0

线程池的使用和实现

在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:   如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时...

2018-03-09 17:45:26

阅读数 36

评论数 0

volatile关键字解析

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。   volatile关键字虽然从...

2018-03-09 17:44:37

阅读数 28

评论数 0

主线程等待几个子线程执行完成方案

 有时,为了程序的性能,我们有必要对程序中的for循环(含有sql/rpc操作)进行并发处理,要求是并发处理完之后才能继续执行主线程。现给出如下两种方案:   1. CountDownLatch package com.itlong.whatsma...

2018-03-09 17:43:35

阅读数 421

评论数 0

深入剖析ThreadLocal

想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了...

2018-03-09 17:43:26

阅读数 23

评论数 0

同步容器

为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)。今天我们就来讨论下同步容器。   以下是本文的目录大纲:   一.为...

2018-03-09 17:42:47

阅读数 26

评论数 0

深入JVM锁机制2-Lock

前文(深入JVM锁机制-synchronized)分析了JVM中的synchronized实现,本文继续分析JVM中的另一种锁Lock的实现。与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。 在ja...

2018-03-09 17:42:34

阅读数 33

评论数 0

用户态和内核态

(1)用户态和内核态的概念? --->内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序--->用户态: 只能受限的访问内存, 且...

2018-03-09 17:42:31

阅读数 204

评论数 0

synchronized

虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。   以下是本文的目录...

2018-03-09 17:42:02

阅读数 35

评论数 0

Java ConcurrentModificationException异常原因和解决方法

在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。   以...

2018-03-09 17:41:27

阅读数 36

评论数 0

为什么ConcurrentHashMap是弱一致的(jdk6)

本文将用到Java内存模型的happens-before偏序关系(下文将简称为hb)以及ConcurrentHashMap的底层模型相关的知识。本文将从ConcurrentHashMap的get,clear,iterator(entrySet、keySe...

2018-03-09 17:41:20

阅读数 88

评论数 0

CountDownLatch、CyclicBarrier和Semaphore

在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。   以下是本文目录大纲:   一.Cou...

2018-03-09 17:41:17

阅读数 56

评论数 0

Thread类的使用

在前面2篇文章分别讲到了线程和进程的由来、以及如何在Java中怎么创建线程和进程。今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的具体使用。   ...

2018-03-09 17:41:05

阅读数 40

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭