随笔分类 - java并发
摘要:public class TestThreadLocal { // 使用ThreadLocal 子线程获取不到父线程的值 // public static ThreadLocal<String> threadLocal = new ThreadLocal<>(); // 使用InheritableT
阅读全文
摘要:```java /** * 插入排序 */ public class InsertSort { public static void main(String[] args){ int[] arr = {5,5,2,6,3,4}; int length = arr.length; int a,b,key; for (a = 1; a =0&&arr[b]>key){ arr[b+1] = arr[b
阅读全文
摘要:java / 奇偶交换排序 / public class EventSort { public static void main(String[] args){ Integer[] arr = {5,5,2,6,3,4}; for (Integer integer : arr) { System.o
阅读全文
摘要:java / 并行流水线 求 (B+C) B/2 Plus:A = B + C Multiply:D = A B Div:D = D / 2 i = i (i+j)/2 / public class PStreamMain { public static void main(String[] arg
阅读全文
摘要:```java import java.util.Map; import java.util.concurrent.ConcurrentSkipListMap; /** * 跳表的使用 */ public class ConcurrentSkipListMapDemo { public static void main(String[] args){ ConcurrentSkipListMap m
阅读全文
摘要:```java import java.util.ArrayList; import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.ForkJoinTask; import java.util.concurrent.Recu
阅读全文
摘要:```java import java.util.concurrent.*; public class DivTask implements Runnable{ int a,b; public DivTask(int a, int b) { this.a = a; this.b = b; } @Override public void run() { double re = a/b; System
阅读全文
摘要:```java import java.util.concurrent. ; / ThreadPoolExecutor扩展 / public class ExtThreadPool { public static class MyTask implements Runnable{ public St
阅读全文
摘要:```java import java.util.concurrent. ; / 自定义线程创建 / public class RejectThreadPoolDemo2 { public static class MyTask implements Runnable{ @Override publ
阅读全文
摘要:```java import java.util.concurrent. ; / | 小于corePoolSize 分配线程执行 任务提交 | | 成功 等待执行 | 大于corePoolSize 提交到等待队列 | | 达到maximumPoolSize线程,提交失败 拒绝执行 | 失败 提交线程
阅读全文
摘要:```java import java.util.concurrent.locks.LockSupport; /** * 线程阻塞工具类:LockSupport * 可以在线程内任意位置让线程阻塞 */ public class LockSupportDemo { public static Object o = new Object(); static ChangeObjectThread t1
阅读全文
摘要:解决并发情况下的容器线程安全问题的。给多线程环境准备一个线程安全的容器对象。 线程安全的容器对象: Vector, Hashtable。线程安全容器对象,都是使用synchronized方法实现的。 concurrent包中的同步容器,大多数是使用系统底层技术实现的线程安全。类似native。Jav
阅读全文
摘要:Java锁的深度化 悲观锁、乐观锁、排他锁 场景 `当多个请求同时操作数据库时,首先将订单状态改为已支付,在金额加上200,在同时并发场景查询条件下,会造成重复通知。 SQL: Update ` 悲观锁与乐观锁 悲观锁: ` 悲观锁悲观的认为每一次操作都会造成更新丢失问题,在每次查询时加上排他锁。
阅读全文
摘要:线程池创建方式jdk1.5 Java通过Executors(jdk1.5并发包)提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。若有空闲线程可以复用,则优先使用复用的线程,所有线程在当前任务
阅读全文
摘要:案例二:
阅读全文
摘要:```java import java.util.concurrent.ConcurrentLinkedDeque; /** * ConcurrentLinkedQueue:是一个适用于高并发场景下的队列,通过无锁的方式,实现 * 了高并发状态下的高性能,通常ConcurrentLinkedQueue性能好于BlockingQueue.它 * 是一个基于链接节点的无界线程安全队列。该...
阅读全文
摘要:```java import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class Res { public String userSex; public String userName; public boolean flag = false; Lock loc
阅读全文
摘要:wait与sleep区别? 对于sleep()方法,该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。 sleep()方法导致了程序暂停执行指定的时间,让出cpu给其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。 在调用sleep()方法的过
阅读全文
摘要:```java import java.util.concurrent.atomic.AtomicInteger; / 原子操作的类 atomic / public class VolatileDemo { static AtomicInteger i = new AtomicInteger(0);
阅读全文
摘要:```java /** * 买票问题 */ public class ThreadTrain1 implements Runnable { private int count = 10; private static Object o = new Object(); @Override public void run() { while (count>0){ try { Thread.sleep(
阅读全文