`

线程并发工具--线程执行器

 
阅读更多

有的时候,你可能会产生大量的线程,这些线程的执行可能是有规定的,比如同时只运行最多有3个线程在执行,这种情况就可以使用线程执行器。线程执行器的分为一下几种:

1)固定大小的

ExecutorService executorService = Executors.newFixedThreadPool(3);
这个执行器表示不论多少个线程被装进这个执行器里面,同时在运行的最多只有3个。

2)单线程执行

ExecutorService executorService = Executors.newSingleThreadExecutor();
这个和Executors.newFixedThreadPool(1)是一个道理。

3)缓存式执行器

ExecutorService executorService = Executors.newCachedThreadPool();
你来多少线程我就给你起多少个线程为你服务。

另外,关闭线程池有两种方法,shutdown()表示等所有任务都执行完毕之后再关闭;shutdownNow()表示立即关闭,不论是否当前还有正在运行的任务。


往执行器中提交任务的两种任务:

1:普通提交,不管执行结果:

servie.execute(new Runnable(){
	@Override
	public void run() {
		System.out.println("task running in Executors");
	}
});

2:Future&Callable等待执行结果:

		Future future = servie.submit(new Callable<String>() {
			@Override
			public String call() throws Exception {
				return "Hello";
			}
		});
		
		try {
			System.out.println(future.get());
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (ExecutionException e) {
			e.printStackTrace();
		}






分享到:
评论

相关推荐

    多线程精品资源--高并发-高可靠-高性能three-high-import导入系统-高并发多线程进阶.zip

    **多线程**:多线程是指在一个进程中同时执行多个独立的线程。这种技术允许程序同时处理多个任务,提高系统的利用率和响应速度。在Java、Python、C#等编程语言中,都提供了对多线程的支持。 **高并发**:高并发是指...

    JAVA线程高级-线程按序交替执行

    - `join()`方法让调用的线程等待目标线程执行完毕后再继续执行。 2. **`synchronized`关键字**: - `synchronized`用于实现线程同步,防止数据的不一致性。它可以修饰方法或代码块,当一个线程进入同步块/方法后...

    Java多线程实战精讲-带你一次搞明白Java多线程高并发

    如垃圾收集器就是守护线程。 9. **并发工具类** - **CountDownLatch**:用于计数,当计数值为零时,所有等待的线程可以继续执行。 - **CyclicBarrier**:多线程同步点,允许一组线程等待其他线程到达某个点后再...

    多线程并发技术

    线程dump是一种常见的调试手段,它能够输出线程执行时的快照,便于开发者分析线程在某个特定时刻的状态,从而定位并发问题。在JDK中,jstack工具能够生成线程堆栈跟踪,这可以用来分析死锁和线程状态。 为了保证多...

    多线程精品资源--多线程与高并发.zip

    在IT行业中,多线程和高并发是两个关键的概念,特别是在服务器端开发、分布式系统以及高性能计算领域。本文将深入探讨这两个主题,并结合资源包"多线程精品资源--多线程与高并发.zip"中的内容,提供相关知识点的详细...

    JDK5中的多线程并发库

    在JDK5中,多线程并发库引入了一系列新的特性,极大地增强了Java处理并发问题的能力。以下是关于这个主题的详细解释: 1. **线程**: - **线程与进程的关系**:进程是一个正在执行的程序实体,而线程是进程内部的...

    多线程与高并发-电子.pdf

    换句话说,线程是程序内部的并发执行路径。例如,当我们使用浏览器上网时,浏览器本身是一个进程,而我们在多个标签页中浏览不同的网页,每个标签页中的网页加载操作可以看做是一个线程。在Java中,我们可以使用...

    C#内存释放-线程控制-线程启动-线程暂停

    在C#编程中,线程控制和内存管理是两个至关重要的概念,特别是在处理并发和优化应用程序性能时。本文将深入探讨“C#内存释放-线程控制-线程启动-线程暂停”这一主题,结合提供的WFormsThread文件,我们可以假设这是...

    JDK5中的多线程并发库.doc

    - **同步代码块**:使用`synchronized`关键字锁定特定对象,确保同一时刻只有一个线程执行。 - **同步方法**:对整个方法进行同步,可以是实例方法(锁定`this`)或静态方法(锁定类的`Class`对象)。 4. **线程...

    线程-线程池-锁-集合-Map-队列.docx

    `join()`方法使得当前线程等待指定线程执行完毕后再继续执行。 线程池是一种线程使用模式,可以有效控制运行的线程数量,避免过多线程导致的资源消耗。在Java中,使用`ExecutorService`和`ThreadPoolExecutor`来...

    15-linux线程专题讲座-王保明.rar

    - `gdb`调试器可以跟踪线程执行,查看线程状态。 - `top`或`htop`命令监控线程资源消耗。 通过本次讲座,我们可以全面了解Linux线程的原理与实践,提升在多线程编程中的技能,更好地应对复杂并发场景。

    C#多线程探索---讲诉多线程

    线程作为进程中的一个执行单元,拥有自己的寄存器(如栈指针、程序计数器),但共享同一段代码区,允许多个线程执行相同的函数。多线程机制使程序能够同时处理多个任务,显著提高CPU的利用率和程序效率。 例如,Web...

    -河马多线程扫描器-

    在河马多线程扫描器中,这一技术被巧妙地应用到网络扫描中,可以同时对多个目标IP地址或端口进行并发操作,大大提升了扫描速度,尤其是在面对大型网络环境或者需要快速排查安全隐患时,这种性能优势尤为明显。...

    多线程精品资源--60行代码实现多线程PDF转Word.zip

    对于大型项目,可能需要使用更高级的并发工具,如`concurrent.futures`,或者使用异步编程模型,如`asyncio`库,以实现更复杂的并发控制。 总之,通过学习这个多线程PDF转Word的示例,你可以深入了解如何在Python中...

    暂停线程工具(附源码)

    但要注意,为了防止死锁和其他并发问题,工具需要确保在暂停线程之前,线程已经完成了所有临界区的操作。 3. **恢复功能**:与暂停类似,恢复线程可能需要调用如`ResumeThread`的API,让线程继续执行。同样,恢复前...

    java线程与并发编程实践

    Java提供了一系列并发工具类,如Semaphore(信号量)、CyclicBarrier(循环屏障)、CountDownLatch(计数器门锁)和Exchanger(交换器),它们用于控制线程间访问资源的顺序和数量,协调多个线程间的操作。...

    多线程精品资源--Java NIO+多线程实现聊天室.zip

    Java提供了`synchronized`关键字、`wait()`, `notify()` 和 `notifyAll()` 方法,以及`java.util.concurrent`包下的高级工具如`Semaphore`, `CyclicBarrier`, `CountDownLatch`等,用于确保线程安全和避免竞态条件。...

    Java多线程与线程安全实践-基于Http协议的断点续传.rar

    线程是程序执行的最小单位,一个进程中可以有多个线程并发执行。Java通过Thread类和Runnable接口提供对线程的支持。创建线程有两种基本方式:继承Thread类并重写run()方法,或者实现Runnable接口并将其传递给Thread...

    Python-Python3爬虫系列的理论验证比较同步依序下载多进程并发多线程并发和asyncio异步编程之间的效率差别

    然而,由于GIL(全局解释器锁)的存在,Python的多线程在CPU密集型任务上并不能充分利用多核资源,但在I/O密集型任务中,如爬虫,仍可以并发执行请求,提高效率。需要注意的是,线程间的同步和竞争条件也需要谨慎...

Global site tag (gtag.js) - Google Analytics