![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
way_more
You can be way more.
展开
-
线程池之ThreadPoolExecutor使用
目录ThreadPoolExecutor预定义线程池1、FixedThreadPool2、CachedThreadPool3、SingleThreadExecutor4、ScheduledThreadPool自定义线程池ThreadPoolExecutorThreadPoolExecutor提供了四个构造方法:我们以最后一个构造方法(参数最多的那个),对其参数进行解释:public ThreadPoolExecutor(int corePoolSize, // 1转载 2020-11-04 21:41:46 · 227 阅读 · 0 评论 -
线程池之ThreadPoolExecutor概述
前言Java源码里面都有大量的注释,认真读懂这些注释,就可以把握其七分工作机制了。关于ThreadPoolExecutor的解析,我们就从其类注释开始。现将注释大致翻译如下:ExecutorService(ThreadPoolExecutor的顶层接口)使用线程池中的线程执行每个提交的任务,通常我们使用Executors的工厂方法来创建ExecutorService。线程池解决了两个不同的问题:1、提升性能:它们通常在执行大量异步任务时,由于减少了每个任务的调用开销,并且它们提供了一种限制和管理转载 2020-11-03 21:18:17 · 143 阅读 · 0 评论 -
CountDownLatch类解析和使用
CountDownLatchCountDownLatch是一种java.util.concurrent包下一个同步工具类,官方的介绍如下A synchronization aid that allows one or more threads to wait untila set of operations being performed in other threads completes.大概意思是:它允许一个或多个线程等待直到其他线程中一组操作执行完成。CountDownLatch能够使原创 2020-06-10 19:36:05 · 163 阅读 · 0 评论 -
通俗易懂的volatile讲解和并发三大特性
volatilevolatile 是Java中的一个修饰符,被volatile 修饰的成员变量在每次被线程访问时,都强制从主内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到主内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因原创 2020-06-04 16:27:40 · 435 阅读 · 0 评论 -
进阶向,超详细Java多线程并发面试题总结,看完再也不怕面试问多线程并发了
1. synchronized 关键字1.1. 说一说自己对于 synchronized 关键字的了解synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。另外,在 Java 早期版本中,synchronized属于重量级锁,效率低下,因为监视器锁(monitor)是依赖于底层的操作系统的 Mutex Lock 来实现的,Java 的线程是映射到操作系统的原生线程之上的。如果要挂起或者唤醒一个线程转载 2020-06-03 21:23:16 · 303 阅读 · 0 评论 -
Java 多线程常见基础面试题总结,面试必看!
1. 什么是线程和进程?1.1. 何为进程?进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。如下图所示,在 windows 中通过查看任务管理器的方式,我们就可以清楚看到 window 当前运行的进程(.exe 文件的运行)。1.2. 何为线程?线程与进程相似,但线程是一个转载 2020-06-03 18:22:02 · 1360 阅读 · 0 评论 -
Thread.sleep(0) 有什么用?
我们可能经常会用到 Thread.Sleep 函数来吧使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题:假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会不会被唤醒?某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) 。既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么?我们先回顾一下操作系统原理。操作系统中转载 2020-06-03 15:37:32 · 79 阅读 · 0 评论