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

线程池内的线程是否需要销毁?

时间:2020-02-28 15:41:42      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:catch   autowired   system   ack   mem   org   try   too   autowire   

结论:线程池管理的线程不用销毁,起到复用效果。使用Thread.currentThread().interrupt();好像也没有明显的效果。线程池的线程就像外包公司的员工一样,招进来了,即使没有活干也要有一个工号
技术图片
技术图片

package com.example.app10;

import org.springframework.stereotype.Component;

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

@Component
public class ThreadTool {

    private ExecutorService pool = Executors.newFixedThreadPool(10);

    public void saveWsRequest( ) {
        pool.execute(new ElasticsearchWsWritThread());
    }

    class ElasticsearchWsWritThread implements Runnable {

        public ElasticsearchWsWritThread( ) {

        }

        @Override
        public void run() {
            try {

                System.out.println(Thread.currentThread().getName()+"--"+System.currentTimeMillis());
                Thread.sleep(5000);
                //Thread.currentThread().interrupt();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }


    }





}


package com.example.app10;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
public class TestController {

    @Autowired
    private ThreadTool threadTool;
    @RequestMapping("test")
    public String start(){
        System.out.println();
        for(int i = 0; i<100;i++){
            threadTool.saveWsRequest();
        }
     return "test1243";
    }
}

技术图片
通过这个动画可以推测 newFixedThreadPool如果需要的线程数超出了线程池的大小就会产生等待。但是不知道会不会产生超时。我自己写的测试已经跑了十几分中了还在执行,没有报超时。

线程池内的线程是否需要销毁?

标签:catch   autowired   system   ack   mem   org   try   too   autowire   

原文地址:https://www.cnblogs.com/mumian2/p/12377298.html

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