多线程
mywaya2333
这个作者很懒,什么都没留下…
展开
-
countdownLatch
当某项工作需要由若干项子任务并行地完成,并且只有在所有的子任务结束之后,当前主任务才能进入 下一阶段,这时候我们可以使用CountDownLatch。 CountDownLatch,直译为倒计数门阀,它的作用就与其名字所表达的意思一样,是指有一个门阀在等 待倒计数,直到计数器为0的时候才打开。public class Test6 { public static void main(String[] args) { int[] productIds = {1, 2, 3,原创 2022-01-23 15:22:39 · 254 阅读 · 0 评论 -
线程池的使用
线程池的主要参数有以下6个。 1. corePoolSize(线程池基本大小):当向线程池提交一个任务时,若线程池已创建的线程数小于 corePoolSize,就会通过创建一个新线程来执行该任务,直到已创建的线程数大于或等于 corePoolSize时,(除了利用提交新任务来创建和启动线程(按需构造),也可以通过 prestartCoreThread() 或 prestartAllCoreThreads() 方法来提前启动线程池中的基本线程。) 2. maximumPoolSize(线程池最大大小):线程池原创 2022-01-23 11:06:41 · 195 阅读 · 0 评论 -
Java内存模型
共享变量存储于主内存之中,每个线程都可以访问。 每个线程都有私有的工作内存或者称为本地内存。 工作内存只存储该线程对共享变量的副本。 线程不能直接操作主内存,只有先操作了工作内存之后才可以写入主内存。原子性 一致性 可见性volatile与synchronized区别使用上:volatile关键字只能用于修饰实例变量或者类变量,不能用于修饰方法以及方法参数和局 部变量、常量。synchronized不能用于对变量的修饰,只能用于修饰方法或者语句块。volatile修 饰的变量可以原创 2022-01-22 15:14:18 · 152 阅读 · 0 评论 -
isInterrupt interrupt interrupted
原创 2022-01-22 14:42:54 · 147 阅读 · 0 评论 -
线程创建方式
1.继承Thread类2.它接收一个 Runnable 接口,我们只需要提供一个 Runnable接口,并重写run方法即可。public class Test3 {public static void main(String[] args) {new Thread(new Music()).start();}}class Music implements Runnable {@Overridepublic void run() {while (true) {System.out原创 2022-01-22 14:37:36 · 175 阅读 · 0 评论 -
线程的生命周期
线程的生命周期包括新建(NEW)、就绪(RUNNABLE)、运行(RUNNING)、阻塞 (BLOCKED)、销毁(TERMINATED)原创 2022-01-22 14:12:41 · 271 阅读 · 0 评论