多线程
文章平均质量分 66
匿名者X
匿名者X
展开
-
多线程 - 父线程向子线程传值方案探讨
1 . ThreadLocal测试代码:public class TestThreadLocal { public static ThreadLocal<String> threadLocal = new ThreadLocal<>(); public static void main(String[] args) { //设置线程变量 threadLocal.set("hello world"); Thread thread = new原创 2021-01-04 13:38:24 · 516 阅读 · 0 评论 -
多线程 - ThreadLocal分析
ThreadLocal 简单介绍及源码分析简单介绍ThreadLocal 是一个线程的本地变量,也就意味着这个变量是线程独有的,是不能与其他线程共享的,这样就可以避免资源竞争带来的多线程的问题,这种解决多线程的安全问题和lock(这里的lock 指通过synchronized 或者Lock 等实现的锁) 是有本质的区别的:lock 的资源是多个线程共享的,所以访问的时候需要加锁。ThreadLocal 是每个线程都有一个副本,是不需要加锁的。lock 是通过时间换空间的做法。ThreadLoc原创 2021-01-04 10:18:42 · 214 阅读 · 0 评论 -
多线程 EagerThreadPool(dubbo)程池的实现
EagerThreadPool 种线程池的实现任务处理优先线程池ThreadPoolExecutor普通线程执行器。当线程池核心线程达到阈值时新任务放入队列。当队列已满开启新线程处理。当前线程数达到最大线程数时执行拒绝策略。EagerThreadPoolExecutor自定义线程执行器。当线程池核心线程达到阈值时,新任务不会放入队列而是开启新线程进行处理(要求当前线程数没有超过最大线程数)。当前线程数达到最大线程数时任务放入队列。队列已满执行拒绝策略源码如下:public class EagerT原创 2021-01-03 12:36:12 · 593 阅读 · 0 评论 -
多线程 JDK线程池详解
线程池详解JDK类图Executor , ExecutorService , Executors 区别ExecutorExecutorServiceExecutor 是 Java 线程池的核心接口,用来并发执行提交的任务ExecutorService 是 Executor 接口的扩展,提供了异步执行和关闭线程池的方法提供execute()方法用来提交任务提供submit()方法用来提交任务execute()方法无返回值submit()方法返回Future对象,可用来获取原创 2020-12-31 16:17:03 · 331 阅读 · 0 评论 -
多线程详细介绍
线程是程序执行的最小单元,多线程是指程序同一时间可以有多个执行单元运行(这个与你的CPU核心有关)。在java中开启一个新线程非常简单,创建一个Thread对象,然后调用它的start方法,一个新线程就开启了。那么执行代码放在那里呢?有两种方式:1. 创建Thread对象时,复写它的run方法,把执行代码放在run方法里。2. 创建Thread对象时,给它传递一个Runnable对象,把执行代码放在Runnable对象的run方法里。如果多线程操作的是不同资源,线程之间不会相互影响,不会产生任转载 2020-08-21 15:03:30 · 285 阅读 · 0 评论 -
synchronized 和 volatile
synchronized:同步锁(锁主要提供2中特性,互斥性和可见性)互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。可见性要更加复杂一些,它必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另一个线程是可见的 —— 如果没有同步机制提供的这种可见性保证,线程看到的共享 ,变量可能是...原创 2018-06-03 21:44:17 · 182 阅读 · 0 评论 -
多线程AQS同步器的实现原理
1.什么是AQS? AQS的核心思想是基于volatile int state这样的volatile变量,配合Unsafe工具对其原子性的操作来实现对当前锁状态进行修改。同步器内部依赖一个FIFO的双向队列来完成资源获取线程的排队工作。2.同步器的应用 同步器主要使用方式是继承,子类通过继承同步器并实现它的抽象方法来管理同步状态,对同步状态的修改或者访问主要通过同步器提供的3个方法:getState() 获取当前的同步状态 setState(int newState) 设置当前同步...转载 2020-08-21 14:25:58 · 188 阅读 · 0 评论 -
多线程 并发包api 简单介绍
1 . 可重入锁和不可重入锁可重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,ReentrantLock 和synchronized 都是可重入锁,可重入锁最大的作用是避免死锁public class Test implements Runnable{ public synchronized void get(){ System.out.println(Thread.currentThread().getId()); set(); }原创 2020-07-27 10:54:51 · 226 阅读 · 0 评论