02 2018 档案
摘要:一、前言 concurrentHashMap与ConcurrentSkipListMap性能测试 在4线程1.6万数据的条件下,ConcurrentHashMap 存取速度是ConcurrentSkipListMap 的4倍左右。 但ConcurrentSkipListMap有几个Concurren
阅读全文
摘要:构造方法:public ArrayBlockingQueue(int capacity) { this(capacity, false); } public ArrayBlockingQueue(int capacity, boolean fair) { if (capacity <= 0) thr
阅读全文
摘要:源码分析:读写(get,add) 一:get 方法
阅读全文
摘要:队列、链表之类的数据结构及其常用。Java中,ArrayList和Vector都是使用数组作为其内部实现。两者最大的不同在于:Vector是线程安全的,而ArrayList不是。此外LinkedList使用链表的数据结构实现了List,但并不是线程安全的,就像之前包装HashMap,这里我们可以使用
阅读全文
摘要:代码:public class SysHashMao { private static Map<String,String> map= Collections.synchronizedMap(new HashMap<String,String>()); public static void main
阅读全文
摘要:一、利用xml 配置 1.web.xml <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLo
阅读全文
摘要:100.033.025.050.0 细心的你肯定会说,我们明明是开启了5个线程,为什么会得到4个结果呢,即使是100/0,那么也会报异常,为什么会没有呢。难道是线程池把错了“吃了吗?”。对于我们来说如果发现错误但是没有异常信息那是一件多么可怕的事情啊。 所以线程池好用,但是也存在我们所说的坑啊。上面
阅读全文
摘要:线程池的大小对系统的性能有一定的影响。过大或者过小的线程数量都无法发挥到最优的系统性能。只要避免线程池的过大或者过小,那么一把来说线程池对系统的性能影响不大。我经常参考的线程池大小的经验公式: Ncpu=CPU的数量 Ucpu=目标CPU的使用率,0<= Ucpu<=1 W/C=等待的时间与计算的时
阅读全文
摘要:参数说明:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { this(cor
阅读全文
摘要:package 第三章.线程阻塞工具LockSupport;import java.util.concurrent.locks.LockSupport;/** * Created by zzq on 2018/2/2. */public class LockSupportDemo { public
阅读全文
摘要:package 第三章.循环栅栏CyclicBarrier;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;/** * Created by zzq on 201
阅读全文
摘要:package 第三章.倒计时器CountDownLatch;import java.util.concurrent.CountDownLatch;/** * Created by zzq on 2018/1/24. */public class CountDoenLatchTest impleme
阅读全文
摘要:一、分为两种:公平和非公平线程 a b c d e公平:按顺序执行:a,b,d,e 读锁 c 写锁 1.a,b 执行 c 堵塞,d,e 等待 2.a,b执行结束 c获取锁 d,e堵塞等待 3.c执行结束 d开始执行,然后在唤醒e非公平: 1,2步骤相同 3,c执行结束的时候,新来个线程 f读锁,在d
阅读全文
摘要:package 第三章.信号量;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;/** * Created
阅读全文
摘要:package 第三章.重入锁;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;/** * Created by zzq on 2018/1/23. */publi
阅读全文
摘要:package 第三章.重入锁;import java.util.concurrent.locks.ReentrantLock;/** * Created by zzq on 2018/1/22. */public class ReentrantLockTest implements Runnabl
阅读全文
摘要:package 第二章.错误的加锁;/** * Created by zzq on 2018/1/22. */public class BadLockOnInteger implements Runnable{ public static Integer i = 0; static BadLockO
阅读全文
摘要:package 第二章.并发下诡异的HashMap;import org.junit.Test;import java.util.HashMap;import java.util.Map;import java.util.concurrent.atomic.AtomicInteger;/** * C
阅读全文
摘要:package 第二章.并发下的ArrayList;import java.util.ArrayList;import java.util.List;/** * Created by zzq on 2018/1/19. */public class 并发下的ArrayList { static Ar
阅读全文
摘要:package 第二章.程序的幽灵之隐蔽的错误;/** * Created by zzq on 2018/1/19. */public class 隐蔽的错误 { public static void main(String[] args) {// int v1=1073741827;// int
阅读全文
摘要:package 第二章.守护线程;/** * Created by zzq on 2018/1/18. */public class 守护线程Test { public static class MyThread extends Thread{ private int i = 0; @Overrid
阅读全文
摘要:package 第二章.线程优先级;/** * Created by zzq on 2018/1/18. */public class 线程优先级 { public static class T1 extends Thread{ @Override public void run() { Syste
阅读全文
摘要:public class 线程组创建 { public static void main(String[] args) { ThreadGroup threadGroup=new ThreadGroup("my"); threadGroup.setMaxPriority(5); System.out
阅读全文
摘要:volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于vo
阅读全文
摘要:在前面谈到了一些关于内存模型以及并发编程中可能会出现的一些问题。下面我们来看一下Java内存模型,研究一下Java内存模型为我们提供了哪些保证以及在java中提供了哪些方法和机制来让我们在进行多线程编程时能够保证程序执行的正确性。在Java虚拟机规范中试图定义一种Java内存模型(Java Memo
阅读全文
摘要:package 第二章.新建线程;/** * Created by zzq on 2018/1/17. */public class 线程中断 { public static void main(String[] args) throws InterruptedException { Thread
阅读全文
摘要:package 第二章.新建线程;/** * Created by zzq on 2018/1/17. */public class 线程中断 { public static void main(String[] args) throws InterruptedException { Thread
阅读全文
摘要:public class 等待和通知 { final static Object ob=new Object(); public static class T1 extends Thread{ @Override public void run() { synchronized (ob){ Syst
阅读全文
摘要:public class 自定义线程创建 { public static void main(String[] args) { ThreadPoolExecutor threadPoolExecutor=new ThreadPoolExecutor(2, 5, 0, TimeUnit.SECONDS
阅读全文