Java中不明白的知识之 --- 线程池

  • 什么是线程池

可以容纳多个线程的容器;

程序可以从线程池获取线程来完成目标代码;

也可以将线程归还给线程池,省去了创建线程和销毁线程这个月非常繁琐的操作

  • 线程池的使用
public static ExecutorService newFixdeThreadPool(int nThreads);
//得到一个线程对象,初始化参数是要求的当前线程池中的线程数
public Future submit(Runnable target);
//从线程池中获取一个线程对象,并且执行给定的Runnable接口实现类对象作为目标
package com.wcc.Thread;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

class MyThreadtest implements Runnable{

	@Override
	public void run() {
		System.out.println("Runnable 接口实现类,线程目标代码");
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("我叫:" + Thread.currentThread().getName());
	}
}

public class Demo7 {
	public static void main(String[] args) {
		//创建线程池对象
		ExecutorService service = Executors.newFixedThreadPool(5);
		//创建一个MyThreadtest Runnable接口实现类对象
		MyThreadtest target = new MyThreadtest();
		//使用线程池对象中的一个线程,指定目标代码
		//初始化线程数为5,这里使用的是线程池中已经存在的5个线程来执行代码
		service.submit(target);
		service.submit(target);
		service.submit(target);
		service.submit(target);
		service.submit(target);
		
		//原本的五个线程都在被使用中,这里需要等待五个线程执行完毕,出现空线程之后
		//才能执行下面代码
		
		service.submit(target);
		service.submit(target);
		
	}

}

展示结果:

Runnable 接口实现类,线程目标代码
Runnable 接口实现类,线程目标代码
Runnable 接口实现类,线程目标代码
Runnable 接口实现类,线程目标代码
Runnable 接口实现类,线程目标代码
我叫:pool-1-thread-4
Runnable 接口实现类,线程目标代码
我叫:pool-1-thread-1
我叫:pool-1-thread-3
Runnable 接口实现类,线程目标代码
我叫:pool-1-thread-2
我叫:pool-1-thread-5
我叫:pool-1-thread-4
我叫:pool-1-thread-3
发布了11 篇原创文章 · 获赞 25 · 访问量 7887

猜你喜欢

转载自blog.csdn.net/weixin_42597414/article/details/104636841