
java多线程
^to be better ^
talk is cheap, show me code &
展开
-
接口实现超时熔断
ExecutorService executorService = Executors.newFixedThreadPool(5);Callable<String> call = new Callable<String>() { public String call() throws Exception { return soap.createBooking(token, objBill, objOil); }};Future<Strin.原创 2020-11-17 14:16:14 · 1298 阅读 · 0 评论 -
多线程之创建一个多线程的几种常用方式(实现多线程的方式有且只有一种 new Thread 方式)
创建多线程的第一种方式: 继承Thread类 class A extends Thread { @Override public void run() { System.out.println("线程A执行了"); } }创建线程的第二种方式: 实现Runnabl...原创 2019-08-03 22:12:55 · 412 阅读 · 0 评论 -
多线程之线程安全问题的举例与分析
一、线程安全的理解 一个多线程任务中存在多种结果(而我们想要的是唯一的结果)二、多线程的特性原子性 有序性 可见性 为了保证JMM可见性问题,引入了内存屏障,会严格规范指令重排序问题(排序有:编译排序、指令排序、内存排序) 三、线程安全的本质原因 共享变量的可见性问题:在java内存模型中,存在多个线程可以共享一个变量,当一个线程对该变...原创 2019-08-04 21:40:18 · 458 阅读 · 0 评论 -
多线程之锁的核心基础(AQS)与ReentranLock以及死锁的理解
一、为什么我们要使用AQS(AbstraceQueueSynchronized) ? 这里我们先介绍下我们使用这个AQS背景,在jdk 1.5之前我们多线程的安全性主要是用Synchronized进行操作,而Synchronized比较死板,当Synchronized修饰的方法、对象获取锁之后其他的线程在当前线程没有释放锁之前是不能访问当前方法的(他的锁是比较重量级的),并...原创 2019-08-09 23:08:05 · 508 阅读 · 0 评论 -
多线程之java中线程池的使用
一、使用线程池的原因 1、可以减少平凡的创建的线程,耗费cpu资源 2、创建的线程不用去手动的关闭 3、控制线程的数量 4、响应的速度更快二、线程池的5种类型 1、固定数量的 ...原创 2019-08-10 23:48:48 · 197 阅读 · 0 评论 -
多线程之单机版的限流工具Semaphore与栅栏工具CyclicBarry
一、Semaphore的作用:限流(并发操作中如果只支持十个并发,就可以用Semaphore进行操作,其余线程都会回阻塞,只有当semaphore中的线程释放令牌其他线程才允许进入)package com.gpdi.security;import java.util.concurrent.Semaphore;/** * * @description:多线程操作的工具类 *...原创 2019-08-11 13:26:50 · 450 阅读 · 0 评论 -
多线程之Condition与BlockQueue介绍与用法
一、Condition 功能介绍:线程间通讯的另一种方式,他的功能和Lock几乎一样 案例说明:下面案例中Condition通过await进行阻塞,然后用single进行唤醒package com.gpdi.security.condition;import java.util.concurrent.locks.Condition...原创 2019-08-11 17:28:14 · 247 阅读 · 0 评论 -
多线程之join用法与ThreadLocal用法
package com.gpdi.security.join;/** * @description: 有A、B两个线程一起执行任务、当A线程调用ThreadB.join()方法后会等线程B运行结束后才执行 * * */public class JoinDemo { public static void main(String[] args) { ...原创 2019-08-11 17:48:34 · 160 阅读 · 0 评论