JUC(4)Callable和常用的辅助类】的更多相关文章

1.Callable 1.可以有返回值 2.可以抛出异常 3.方法不同.run()/call() future Task 细节: 1.有缓存 2.结果可能需要等待,会阻塞 2.常用的辅助类 2.1 CountDownLatch package com.add; import java.util.concurrent.CountDownLatch; //计数器 public class CountDownLatchDemo { public static void main(String[] ar…
CountDownLatch 相当于一个减法计数器, 构造方法指定一个数字,比如6, 一个线程执行一次,这个数字减1, 当变为0 的时候, await()方法,才开始往下执行,, 看这个例子 CyclicBarrier 的用法, 字面意思:循环栅栏, 这是构造方法, 第一个参数parties 是线程数量, 第二个参数是barrierAction: 最后一个线程执行完毕之后,要做的操作 , 重要的方法: await(), 表示这个方法的调用线程已经执行完毕,到达了栅栏, BrokenBarrier…
Set不安全  package com.kuang.unsafe; ​ import java.util.*; import java.util.concurrent.CopyOnWriteArraySet; ​ /**  * 同理可证:ConcurrentModificationException并发修改异常  * 解决方法:  * //1.Set<String> set = Collections.synchronizedSet(new HashSet<>());工具类的写法 …
Callable接口和JUC辅助类 Callable接口: 回顾: 创建线程的四种方式: 继承Thread 实现runnable接口 实现callable接口 使用线程池 之前的文章:多线程编程1-定义理解与三种实现方式 Runnable和Callable接口的差异: Runnable无返回值,Callable有返回值 Runnable不抛异常,Callable抛异常 实现名称不同,Runnable是run方法,Callable是call方法 class MyThread1 implements…
Callable接口和FutureTask实现类,是JUC(Java Util Concurrent)包中很重要的两个技术实现,它们使获取多线程运行结果成为可能.它们底层的实现,就是基于接口回调技术.接口回调,许多程序员都耳熟能详,这种技术被广泛应用于异步模块的开发中.它的实现原理并不复杂,但是对初学者来说却并不友好,其中的一个原因是它的使用场景和处理手段,对习惯了单线程开发的初学者来说有点绕.而各种文章或书籍,在解释这一个问题的时候,往往忽视了使用场景,而举一些小明坐车.A和B等等的例子,初学…
java.util.concurrent.Callable是一个泛型接口,只有一个call()方法 Callable和Runnable的区别 Callable使用call()方法,Runnable使用run()方法 call()可以返回值,而run()方法没有返回值 call()可以抛出受检查的异常,比如ClassNotFoundException,而run()不能抛出受检查的异常 继承关系 程序运行时,Runnable的实例或Callable的实例转化为RunnableFuture的实例Fut…
什么是JUC? JUC就是java.util.concurrent包,这个包俗称JUC,里面都是解决并发问题的一些东西 该包的位置位于java下面的rt.jar包下面 4大常用并发工具类: CountDownLatch CyclicBarrier Semaphore ExChanger CountDownLatch: CountDownLatch,俗称闭锁,作用是类似加强版的Join,是让一组线程等待其他的线程完成工作以后才执行 就比如在启动框架服务的时候,我们主线程需要在环境线程初始化完成之后…
1.什么是JUC 源码 + 官方文档 面试高频问! java.util 工具包.包.分类 业务:普通的线程代码 Thread Runnable 没有返回值.效率相比入 Callable 相对较低! 2.线程和进程 进程:一个程序,QQ.exe Music.exe 程序的集合:一个进程往往可以包含多个线程,至少包含一个! Java默认有几个线程? 2 个 mian.GC 线程:开了一个进程 Typora,写字,自动保存(线程负责的) 对于Java而言:Thread.Runnable.Callabl…
1.什么是JUC java.util 工具包 业务:普通的线程代码 Thread Runnable 没有返回值,效率相比于 Callable 相对较低! 2.线程和进程 进程:一个程序,QQ.exe Music.exe 程序的集合 进程:一个进程往往可以包含多个线程,至少包含一个 java默认有几个线程?2个 一个main 一个GC 线程:进程中的一个执行任务(控制单元),负责当前进程中程序的执行.一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据. 与进程不同的是同类的多个线…
狂神说JUC的原版笔记: 链接:https://pan.baidu.com/s/12zrGI4JyZhmkQh0cqEO4BA 提取码:d65c 我的笔记在狂神的笔记上增加了一些知识点或者做了些许补充/修改 如果狂神原版笔记的连接失效了请在评论区留言,我看到后会更新的 Callable 1.可以有返回值: 2.可以抛出异常: 3.方法不同,run()/call() public class CallableTest { public static void main(String[] args)…