首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ExecutorService会阻止它所在的方法吗?

ExecutorService不会阻止它所在的方法。ExecutorService是Java中的一个接口,用于管理和调度线程池中的线程执行任务。它提供了一种异步执行任务的机制,可以提交任务并返回一个Future对象,通过该对象可以获取任务的执行结果。

ExecutorService的方法通常是非阻塞的,即它们会立即返回并继续执行后续代码,不会阻塞当前线程。例如,submit()方法用于提交一个任务并返回一个Future对象,该方法会立即返回,不会等待任务执行完成。

然而,如果在使用ExecutorService时调用了Future对象的get()方法获取任务的执行结果,而该任务尚未完成,则get()方法会阻塞当前线程,直到任务执行完成并返回结果。这是因为get()方法是一个阻塞方法,它会等待任务执行完成并返回结果。

总结起来,ExecutorService本身不会阻止它所在的方法,但在使用Future对象的get()方法时可能会阻塞当前线程。为了避免阻塞,可以使用isDone()方法判断任务是否完成,或者使用带有超时参数的get()方法,在一定时间内获取任务结果,如果超时则可以进行其他处理。

腾讯云提供了云计算相关的产品,例如云服务器、云数据库、云存储等,可以根据具体需求选择适合的产品。具体产品介绍和相关链接可以参考腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

还记得DeepMind那个跑酷AI打算用这套Python强化学习工具吊打OpenAI

还记得这个跑酷机器人吗? 5个多月前,DeepMind连发三篇强化学习论文,让机器人在仿真环境中自己就能学会灵活多变各种动作,包括步行、跑动、跳跃、访问外国网站,等等。...今天,DeepMind公布了这三篇论文中所用强化学习控制套件dm_control,它是一套基于MuJoCo物理引擎Python强化学习开发环境,可以在一套标准化架构上执行各种不同强化学习任务,...事实上,唯一已知通用智能案例,就出现在业已操控世界数百万年之久灵长类身上。 实体控制任务有着许多共通特性,所以可以将其视为一大类独特行为问题。...我们统一封装奖励结构可以提供可解释学习曲线,并且汇总了全套算法性能测量。此外,我们强调使用设计模式统一高质量完整代码,同时提供可读性、透明性与可扩展性都很强代码库。...默认情况下,dm_control假定MuJoCo Zip文件将被提取到~/.mujoco/mjpro150文件夹。 2.

802100

还记得DeepMind那个跑酷AI打算用这套Python强化学习工具吊打OpenAI

还记得这个跑酷机器人吗? 5个多月前,DeepMind连发三篇强化学习论文,让机器人在仿真环境中自己就能学会灵活多变各种动作,包括步行、跑动、跳跃、访问外国网站,等等。...视频内容 今天,DeepMind公布了这三篇论文中所用强化学习控制套件dm_control,它是一套基于MuJoCo物理引擎Python强化学习开发环境,可以在一套标准化架构上执行各种不同强化学习任务...事实上,唯一已知通用智能案例,就出现在业已操控世界数百万年之久灵长类身上。 实体控制任务有着许多共通特性,所以可以将其视为一大类独特行为问题。...我们统一封装奖励结构可以提供可解释学习曲线,并且汇总了全套算法性能测量。此外,我们强调使用设计模式统一高质量完整代码,同时提供可读性、透明性与可扩展性都很强代码库。...默认情况下,dm_control假定MuJoCo Zip文件将被提取到~/.mujoco/mjpro150文件夹。 2.

771120

java线程池,阿里为什么不允许使用Executors?

如果这个唯一线程因为异常结束,那么会有一个新线程来替代。此线程池保证所有任务执行顺序按照任务提交顺序执行。...newWorkStealingPool (1.8 ForkJoinPool)创建一个工作窃取 可以看到各种不同工厂方法中使用线程池实现类最终只有3个,对应关系如下: 工厂方法 实现类 newCachedThreadPool...6. threadFactory 当线程池判断需要新线程时通过线程工程创建线程。 7. handler 执行被阻止处理程序,线程池无法处理。...下列是JDK中默认携带策略: AbortPolicy (默认)抛出 RejectedExecutionException 异常。 CallerRunsPolicy调用当前线程池所在线程去执行。...采取了工作窃取模式。 后续跟大家一起聊聊 ForkJoinPool。

1.1K20

java线程池executorservice是否结束_java线程池怎么使用

一、ExecutorService介绍 ExecutorService是Java中对线程池定义一个接口,java.util.concurrent包中,在这个接口中定义了和后台任务执行相关方法:...4.4 invokeAny(…) invokeAny(...)方法接收是一个Callable集合,执行这个方法不会返回Future,但是返回所有Callable任务中其中一个任务执行结果。...,并且返回结果是变化,可能返回“Task2”也可是“Task1”或者其它。...(); 五、ExecutorService关闭 当我们使用完成ExecutorService之后应该关闭,否则里面的线程一直处于运行状态。...之所以会出现这种情况,是因为ExecutorService中运行线程阻止JVM关闭。

1.1K30

Java线程池使用注意事项

项目中使用线程池地方很多,一直以来感觉对参数已经掌握很好了,但是遇到几次问题之后才发现欠缺这么多 遇到坑 任务提交后长时间没有执行 任务进入了队列,线程还在执行之前任务。...这个顺序一定不要弄错了 拒绝策略 RejectedExecutionHandler AbortPolicy:直接抛出异常,这是默认策略 CallerRunsPolicy:用调用者所在线程来执行任务 DiscardOldestPolicy...优雅关闭方式 // 线程池进入SHUTDOWN状态,停止接受新任务 executorService.shutdown(); // 等待线程池任务完成 executorService.awaitTermination...线程池使用FutureTask时候如果拒绝策略设置为了 DiscardPolicy和DiscardOldestPolicy并且在被拒绝任务Future对象上调用无参get方法那么调用线程一直被阻塞...线程池使用FutureTask时候需要注意一点事 如何优雅使用和理解线程池 Java中线程池,你真的会用

1.3K30

小白科普:线程和线程池

第一个问题问题就是为什么要多线程啊, 我看了操作系统中多进程管理,不是挺好? 多线程似乎没有必要啊! 不错,多问问为什么,总是有好处。...不能 对,这就是问题所在了,单线程只能干一件事情,无法并发和并行。直接导致用户体验不好。CPU快速运算能力,还有多核,就被浪费了。 ? ?...Word 进程打开了文件,这是资源,QQ音乐打开了Socket,这也是资源。 假设Word有两个线程:T1负责接受用户文字输入,T2 负责自动保存。...其实很简单,就是一个线程调用它take()方法取数据时, 如果这个Queue中没有数据,该线程阻塞;同样,一个线程调用它put方法放数据时,如果Queue满了, 也阻塞。 ? ? ?...ExecutorService executorService = Executors.newFixedThreadPool(10); executorService.execute(new Runnable

65630

小白科普:线程和线程池

第一个问题问题就是为什么要多线程啊, 我看了操作系统中多进程管理,不是挺好? 多线程似乎没有必要啊! 不错,多问问为什么,总是有好处。...不能 对,这就是问题所在了,单线程只能干一件事情,无法并发和并行。直接导致用户体验不好。CPU快速运算能力,还有多核,就被浪费了。...Word 进程打开了文件,这是资源,QQ音乐打开了Socket,这也是资源。 假设Word有两个线程:T1负责接受用户文字输入,T2 负责自动保存。...其实很简单,就是一个线程调用它take()方法取数据时, 如果这个Queue中没有数据,该线程阻塞;同样,一个线程调用它put方法放数据时,如果Queue满了, 也阻塞。 ?...ExecutorService executorService = Executors.newFixedThreadPool(10); executorService.execute(new Runnable

71620

有的线程死了,于是变成一道面试题

1 有些线程活着,但它躺在池中碌碌无为; 有的线程死了,于是变成一道面试题。 这次文章,要从一次阿里巴巴面试说起。...也是我作为面试官时必问几个范围之一,比如以下问题: 了解JDK Executors线程池? 知道JDK提供了哪些默认实现? 看过阿里巴巴java开发手册?知道为啥不允许使用默认实现?...execute方法执行时,抛出(打印)堆栈异常。 submit方法执行时,返回结果封装在future中,如果调用future.get()方法则必须进行异常捕获,从而可以抛出(打印)堆栈异常。...不要背答案,要理解,要深入,上面说完后记得在问问面试官,需要我从源码角度讲一讲?这逼装,礼貌而不失风度。 以上,我关于《一个线程池中线程异常了,那么线程池怎么处理这个线程?》...最后,再感叹一次: 1 有些线程活着,但它躺在池中碌碌无为; 有些线程也活着,但它一刻不停忙到飞起; 有的线程死了,被抛弃,被回收, 但是无怨无悔, 因为它是死在执行任务路上, 凭借自己最后一声呐喊

71970

java多线程编程面试题_linux多线程面试题

join()方法作用是什么 synchronized原理是什么,一般用在什么地方(比如加在静态方法和非静态方法区别,静态方法和非静态方法同时执行时候会有影响) 解释以下名词:重排序,自旋锁,偏向锁...2、就绪状态(Runnable) 处于就绪状态线程已经具备了运行条件,但还没有分配到CPU,处于线 程就绪队列(尽管是采用队列形式,事实上,把称为可运行池而不是可运行队列。...会出现IllegalThreadStateException异常;start()方法调用时候先检查状态,不符合所以抛出异常 多线程同步实现方法有哪些 (1)synchronized关键字 ~~synchronized...synchronized原理是什么,一般用在什么地方(比如加在静态方法和非静态方法区别,静态方法和非静态方法同时执行时候会有影响) 原理 static方法属于类方法属于这个Class(注意...shutdownNow(): 1、该方法返回尚未执行 task List; 2、线程池状态变为STOP状态; 3、阻止所有正在等待启动任务, 并且停止当前正在执行任务。

37810

线程池自引发死锁

一个仔细伐木工人得到了他安全头盔。然而,他不能拿起电锯,因为已经被别人拿走了。更糟糕是,电锯的当前所有者(yolo家伙)在他拿到头盔之前不会释放他电锯。这里没有超时。...线程池自引发死锁 这是一个僵局例子,相当简单。但事实证明,如果使用不正确,单个线程池可能导致死锁。...等待内部任务完成意味着必须从线程获取一个线程pool才能继续。但是我们已经获得了一个线程,因此内部将阻塞,直到它可以得到第二个。我们线程池目前足够大,所以工作正常。...尝试向get()内部任务添加阻止ExecutorService pool = Executors.newSingleThreadExecutor(); pool.submit(() - > {...,因为当前只有一个线程被占用 我们阻止等待内部任务结果。

1K20

java中有界队列饱和策略(reject policy)

我们在使用ExecutorService时候知道,在ExecutorService中有个一个Queue来保存提交任务,通过不同构造函数,我们可以创建无界队列(ExecutorService.newCachedThreadPool...以ExecutorService具体实现ThreadPoolExecutor来说,定义了4种饱和策略。...CallerRunsPolicy CallerRunsPolicy和其他几个策略不同,既不会抛弃任务,也不会抛出异常,而是将任务回退给调用者,使用调用者线程来执行任务,从而降低调用者调用速度。...r.run()方法,这会导致该方法直接在调用者主线程中执行,而不是在线程池中执行。...从而有效阻止了任务提交。 使用Semaphore 如果我们并没有定义饱和策略,那么有没有什么方法来控制任务提交速度呢?

74120

Java并发编程(2)- 线程安全性详解

CAS 操作时抱着乐观态度进行总是认为自己可以成功完成操作。 当多个线程同时使用CAS 操作一个变量时,只有一个胜出,并成功更新,其余均会失败。...,并允许他缓存一致性机制来保证操作原子性,因为缓存一致性机制阻止同时修改两个以上处理器缓存内存区域数据(这里和 volatile 可见性原理相同),当其他处理器回写已被锁定缓存行数据时,会使缓存行无效...通过将热点分散来提高并行度 缺点:在统计时候如果有并发更新,可能导致统计结果有些误差。...但是volatile关键字能保证其所修饰变量是线程安全?实际上并不能,volatile能阻止重排序实现可见性,但是并不具有原子性。...当线程1初始化context完成时,修改inited变量值为true。

31540

Java 并发工具包-常用线程池

Callable 实例除了 call() 方法能够返回一个结果之外和一个 Runnable 很相像。Runnable.run() 不能够返回一个结果。...ExecutorService活动线程阻止了 JVM 关闭。 要终止 ExecutorService线程你需要调用 ExecutorService shutdown() 方法。...这样立即尝试停止所有执行中任务,并忽略掉那些已提交但尚未开始处理任务。无法担保执行任务正确执行。可能它们被停止了,也可能已经执行结束。 2....); 但是,除非你确实需要显式为 ThreadPoolExecutor 定义所有参数,使用 java.util.concurrent.Executors 类中工厂方法之一更加方便...这个方法返回一个 ScheduledFuture,通过你可以在它被执行之前对进行取消,或者在执行之后获取结果。

1K40

面试必备:Java线程池解析

面试问题4:使用无界队列线程池导致内存飙升? 面试问题5:说说几种常见线程池及使用场景? 线程池概念 线程池: 简单理解,它就是一个管理线程池子。...线程池exec.submit(runnable)执行流程 通过debug上面有异常submit方法(建议大家也去debug看一下,图上每个方法内部是我打断点地方),处理有异常submit方法主要执行流程图...为工作者线程设置UncaughtExceptionHandler,在uncaughtException方法中处理异常 我们直接看这样实现正确姿势: ExecutorService threadPool...run以上代码,抛出OOM: ? 因此,面试题:使用无界队列线程池导致内存飙升?...RUNNING 该状态线程池接收新任务,并处理阻塞队列中任务; 调用线程池shutdown()方法,可以切换到SHUTDOWN状态; 调用线程池shutdownNow()方法,可以切换到STOP

51210
领券