线程-Executor的执行方式?

问题描述

Executor的执行方式?

我通过实现runable接口后定义任务后,把任务交给了Executor的实现类后,有她
帮我管理线程执行,Executor 她是把我的任务是同步执行还是异步的去执行?

解决方案

首先,同步异步是处理请求的方式,是否立即返回处理结果告知调用者,这里不存在同步异步执行任务的概念。
其次,Executor是java并发包中提供的一个创建线程池的工具类,而线程池分为多种,有单线程执行任务的,也有多线程执行任务的。
例如:

 Executors.newCachedThreadPool()创建的是多线程,那么线程池中缓存了N个线程去执行任务,那么你的任务就是有多个线程并行执行的。同时可以有多个任务被执行。
 Executors.newSingleThreadExecutor()这个就是创建的是但线程,即线程池中只有一个线程池去执行你提交的任务,那么认为执行就是顺序执行的,即只能一个接一个执行。

线程池的作用就是缓存线程,有线程去执行任务,各个任务之间是独立并行执行的。当然newSingleThreadExecutor这个就退化成单线程了。

时间: 2024-12-03 04:16:08

线程-Executor的执行方式?的相关文章

戏(细)说Executor框架线程池任务执行全过程(下)

原文链接:   首发表于infoq.com 2015年6月 上一篇文章中通过引入的一个例子介绍了在Executor框架下,提交一个任务的过程,这个过程就像我们老大的老大要找个老大来执行一个任务那样简单.并通过剖析ExecutorService的一种经典实现ThreadPoolExecutor来分析接收任务的主要逻辑,发现ThreadPoolExecutor的工作思路和我们带项目的老大的工作思路完全一致.在本文中我们将继续后面的步骤,着重描述下任务执行的过程和任务执行结果获取的过程.会很容易发现,

java创建线程的三种方式及其对比

Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. (2)创建Thread子类的实例,即创建了线程对象. (3)调用线程对象的start()方法来启动该线程. package com.thread; public class FirstThreadTest extends Thread{ int i = 0; //重写run方法,run方法的方

C# 如何让 多线程中每个线程间隔毫秒执行同一个方法?

问题描述 多线程的好处让效率提高很多倍,但是在某些情况下要求操作同一个方法的时候要求有间隔,这个间隔当然是毫秒级别的否则多线程的意义就体现不出来,本问题就是怎么让多线程中每个线程间隔毫秒执行同一个方法,测试代码如下:privatevoidbtnTest_Click(objectsender,EventArgse){TestManyThreadtest=newTestManyThread();test.Start();} 主要代码如下classTestManyThread{privatestati

XAML的执行方式

执行各层次:界面表示层:以*.xaml文件形式存在:业务逻辑层:以*.xaml.cs文件形式存在:应用程序框架层:Presention Framework 3.0-3.5-4.0:系统层:MSIL和底层API以及操作系统内核.对于单线程模式,对象只能由创建自己的线程调用.XAML的执行方式如下: WPF编译XAML过程中,XAML编译通常包括三项事情:将一个XAML文件转换为一种特殊的二进制格式(BAML:Binary Application Markup Language):将转换好的二进制资

C#线程 在某一时间内,只有N个线程在并发执行,其余都在队列中的实现

执行   上司交代要做一个小测试 具体的需求是 在某一时间点,只有N个线程在并发执行,如果有多余的线程,则排队等候~ 还真是费尽心思啊~最终还是被我攻克了~ 下面我就来说说具体的实现 C#提供了Mutex与Interlocked这两个与线程相关的类,都在Threading命名空间下~! Mutex中提供了WiteOne,ReleaseMutex 两个实例方法~ WiteOne的作用是"阻塞当前线程,提供对该线程的原子操作" 也就是说当一个线程遇到WiteOne的时候,如果在WiteOn

js函数 执行方式-javascript函数的执行方式?

问题描述 javascript函数的执行方式? javascript函数有哪些执行方式,有高手帮忙总结一下吗? 解决方案 不知道你说的方式按照什么分类,和别的编程语言类似,js的函数从调用方式上分为普通函数和回调函数,从定义方式看,分为命名函数和匿名函数,从调用者来说,分为递归函数和非递归函数. 解决方案二: 匿名(function(i){alert(i)})(11)显示申明的function func(i){alert(i)}func(1)变量式var func=function(i){ale

Java 线程 实现 定时执行操作

问题描述 Java 线程 实现 定时执行操作 这是使用javafx做的一个界面:1.点击开始按钮能够自动向表格中添加一条记录 2.点击停止按钮能够停止添加,3.文本框内是每次添加的时间间隔. 请问在不用Timer 和TimerTask等util工具类 ,用线程怎么实现点击按钮来定时添加数据和停止添加功能 解决方案 这样的话,可以使用主线程和子线程,点击按钮控制主线程,开启子线程和中断子线程. 而子线程里面,检查中断标识,如果没有被中断,就自己每隔一段时间就执行数据添加的操作.如果被中断,线程ru

Java创建线程的两种方式_java

前言 多线程是我们开发过程中经常遇到的,也是必不可少需要掌握的.当我们知道需要进行多线程开发时首先需要知道的自然是如何实现多线程,也就是我们应该如何创建线程. 在Java中创建线程和创建普通的类的对象操作是一样的,我们可以通过两种方式来创建线程: 1.继承Thread类,并重写run()方法. 2.实现Runnable接口,并实现run()方法. 方法一:继承Thread类 代码非常简单 首先重载一个构造函数,以便我们可以给线程命名. 重写run()方法. 这里我们先让线程输出线程名+start

线程池可以执行不同的线程类吗

问题描述 线程池可以执行不同的线程类吗? newFixedThreadPool如代码:ExecutorService pool = Executors.newFixedThreadPool(2);pool.execute(new A));pool.execute(new b));A B 线程类 执行不同的任务,用同一个线程池 这样可以吗?如果可以为什么?本人担心的是 如果A线程正在执行,还有A业务请求上来 线程池会不会分个B线程来处理A业务啊? 解决方案 肯定可以啊,这些线程会加入到线程队列中去