码迷,mamicode.com
首页 > 编程语言 > 详细

线程池

时间:2020-02-15 15:37:09      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:gen   cal   call   方式   submit   创建ca   执行   generate   method   

线程池

  是一个容纳多个线程容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源

  目的:节省资源

    通常,线程池都是通过线程池工厂创建,再调用线程池中的方法获取线程,再通过线程去执行任务方法。

使用线程池方式--Runnable接口

使用线程池中线程对象的步骤:

n  创建线程池对象

n  创建Runnable接口子类对象

n  提交Runnable接口子类对象

n  关闭线程池

package com.oracle.Demo02;

public class MyRunnable2 implements Runnable{
		public void run() {
			for (int i = 0; i <100; i++) {
				//getName() 得到线程名称
				System.out.println(Thread.currentThread().getName()+":"+i);
			}
		}
	
}

package com.oracle.Demo02;

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

public class Demo01 {

	public static void main(String[] args) {
		//从线程池工厂中创建线程池对象
		ExecutorService es=Executors.newFixedThreadPool(2);
		//创建线程任务对象
		MyRunnable2 mr=new MyRunnable2();
		//提交线程任务,让线程随机挑选一条想吃执行线程任务
		es.submit(mr);
		es.submit(mr);
		es.submit(mr);
		//释放资源
		es.shutdown();

	}

}

  

使用线程池方式—Callable接口

l  Callable接口:与Runnable接口功能相似,用来指定线程的任务。其中的call()方法,用来返回线程任务执行完毕后的结果,call方法可抛出异常。

l  ExecutorService:线程池类

n  <T> Future<T> submit(Callable<T> task):获取线程池中的某一个线程对象,并执行线程中的call()方法

l  Future接口:用来记录线程任务执行完毕后产生的结果。线程池创建与使用

 

l  使用线程池中线程对象的步骤:

n  创建线程池对象

n  创建Callable接口子类对象

n  提交Callable接口子类对象

n  关闭线程池

package com.oracle.Demo02;

import java.util.concurrent.Callable;

public class MyCallble implements Callable<String> {

	@Override
	public String call() throws Exception {
		// TODO Auto-generated method stub
		return "abc";
	}

}

package com.oracle.Demo02;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class Demo02 {

	public static void main(String[] args) throws InterruptedException, ExecutionException {
		//从线程池工厂中创建线程池对象
		ExecutorService ex=Executors.newFixedThreadPool(2);
		//创建线程任务对象
		MyCallble mc=new MyCallble();
		//执行线程任务并获取call方法返回值
		Future<String> f=ex.submit(mc);
		//从Future中获取返回值
		String str=f.get();
		System.out.println(str);
		//释放资源
		ex.shutdown();
		

	}

}

  

 

线程池

标签:gen   cal   call   方式   submit   创建ca   执行   generate   method   

原文地址:https://www.cnblogs.com/zqy6666/p/12312153.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!