多线程_线程池
package a01;
public class MyRunnable implements Runnable{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(Thread.currentThread().getName()+"--->"+i);
}
}
}
------------
package a01;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class MyThreadPoolDemo1 {
public static void main(String[] args) {
/*
static ExecutorService newFixedThreadPool(int nThreads)//创建有上限的线程池
static ExecutorService newCachedThreadPool()//创建一个可以无限扩大的线程池
*/
//1.获取对象
ExecutorService pool1= Executors.newCachedThreadPool();
//2.提交任务
pool1.submit(new MyRunnable());
pool1.submit(new MyRunnable());
pool1.submit(new MyRunnable());
pool1.submit(new MyRunnable());
pool1.submit(new MyRunnable());
//3.关闭线程池
pool1.shutdown();
}
}
-------------------------------------
package a01;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class MyThreadPoolDemo2 {
public static void main(String[] args) {
//1.获取对象
ExecutorService pool1= Executors.newFixedThreadPool(3);//指定线程个数
//2.提交任务
pool1.submit(new MyRunnable());
pool1.submit(new MyRunnable());
pool1.submit(new MyRunnable());
pool1.submit(new MyRunnable());
pool1.submit(new MyRunnable());
//3.关闭线程池
pool1.shutdown();
}
}
-----------------------
自定义线程池:
----------------
package a02;
import a01.MyRunnable;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class MyThreadPoolDemo1 {
public static void main(String[] args) {
/*
ThreadPoolExecutor threadPoolExecutor=new ThreadPoolExecutor(
int corePoolSize,//核心线程池大小
int maximumPoolSize,//最大线程池大小
long keepAliveTime,//线程存活时间
TimeUnit unit,//时间单位
BlockingQueue<Runnable> workQueue,//阻塞队列
ThreadFactory threadFactory,//线程工厂
RejectedExecutionHandler handler//拒绝策略
)
7个参数
*/
ThreadPoolExecutor pool=new ThreadPoolExecutor(
3,
6,
60,
TimeUnit.SECONDS,
new ArrayBlockingQueue<>(3),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.AbortPolicy()
);
//提交任务
pool.submit(new MyRunnable());
//关闭线程池
pool.shutdown();
}
}
----------------------------------------
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hexo!