zoukankan      html  css  js  c++  java
  • Java多线程之线程池

    Java多线程之线程池

    首先强调一点,池是一种设计模式,也就是说好多的成本比较高的连接了这些为了提供性能,用一个池来做缓存。比如说字符串池,比如说数据库连接池,这里介绍下线程池。


    系统启动一个线程的成本还是比较高的,因为它涉及和操作系统交互。具体的设计思路和数据库连接池差不多:

    线程池在系统启动时创建大量空闲的线程,程序将一个Runnable对象传给线程池,线程池会启动一个线程来执行该对象的run方法,当run方法执行结束后,该线程并不会死亡,再次返回到池里面成为了空闲状态,等待执行下一个Runnable对象的run方法。


    JDK1.5之后,Java内建支持线程池。使用线程池来执行线程任务的步骤如下:
    1,调用Executors类的静态工厂方法来创建一个ExecutorService对象,该对象代表一个线程池。
    2,创建Runnable实现类,当然也可以创建Callable实现类,作为线程执行任务
    3,调用ExecutorService对象的submit方法来提交上面的Runnable实例
    4,当不想在提交任何任务时调用ExecutorService对象的shutdown方法来关闭线程池


    具体代码如下:
    import java.util.concurrent.*;
    
    // 实现Runnable接口来定义一个简单的线程类
    class LinkinThread implements Runnable
    {
    	public void run()
    	{
    		for (int i = 0; i < 100; i++)
    		{
    			//使用了池以后,线程的命名就成了“pool-1-thread-1”这样子
    			System.out.println(Thread.currentThread().getName() + " " + i);
    		}
    	}
    }
    
    public class ThreadPoolTest
    {
    	public static void main(String[] args) throws Exception
    	{
    		// 创建一个具有固定线程数(6)的线程池
    		ExecutorService pool = Executors.newFixedThreadPool(6);
    		// 向线程池中提交两个线程
    		pool.submit(new LinkinThread());
    		pool.submit(new LinkinThread());
    		// 关闭线程池
    		pool.shutdown();
    	}
    }
    


          
  • 相关阅读:
    Atitit flowable使用总结 目录 1. flowable 1 1.1. 添加依赖 1 1.2. Flowable的启动接口 2 2. 还是使用简单流程来完成业务流程的学习, 2 2.1.
    dell xps15 9550安装黑苹果
    显示器色域
    数据标准化的方法与意义
    XPS9550困扰我的散热问题终于解决了
    app开发
    纹理
    用 Java 开发一个打飞机小游戏(附完整源码)
    Spring Cloud Gateway 限流实战,终于有人写清楚了!
    OracleJDK 和 OpenJDK 有什么区别?来看看大神的回答!
  • 原文地址:https://www.cnblogs.com/LinkinPark/p/5233095.html
Copyright © 2011-2022 走看看