`

简陋线程池1

阅读更多
package pool;

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

/**
 * 固定的线程执行数
 */
public class ThreadPool
{
    // 执行总线程
    private List<Thread> list;
    
    // 执行的最大线程数
    private int max;
    
    private ThreadTask task;
    
    private Timer timer;
    
    // 第一次执行的延迟时间
    public static final long DELAY = 0;
    
    // 重复执行的时间间隔,默认为 1秒
    public static final long PERIOD = 1000;
    
    // 正在此行的线程
    private List<Thread> executing;
    
    // 定时器消费者
    private class ThreadTask extends TimerTask
    {
        
        @Override
        public void run()
        {
            // 删除执行完的线程
            removeDead(executing);
            int count = executing.size();
            // 执行小于max的线程
            for (int i = count; i < max && list.size() > 0; i++)
            {
                Thread tread = list.remove(list.size() - 1);
                executing.add(tread);
                tread.start();
            }
        }
        
    }
    
    public ThreadPool(int max)
    {
        this.max = max;
        list = Collections.synchronizedList(new LinkedList<Thread>());
        executing = Collections.synchronizedList(new LinkedList<Thread>());
        task = new ThreadTask();
        // false非守护线程,true守护线程,守护线程的定义,当主线程关闭的时候守护线程同时不在执行,反之执行
        timer = new Timer(false);
        timer.schedule(task, DELAY, PERIOD);
    }
    
    // 生产者添加线程
    public void excute(Thread thread)
    {
        list.add(thread);
    }
    
    // 取出执行完线程的引用
    private void removeDead(List<Thread> list)
    {
        Thread thread = null;
        for (int i = 0; i < list.size(); i++)
        {
            thread = list.get(i);
            if (!thread.isAlive())
            {
                list.remove(i);
            }
        }
    }
    
}

 
分享到:
评论

相关推荐

    python爬虫,简陋的pixabay图片下载器

    python爬虫,简陋的pixabay图片下载器python爬虫,简陋的pixabay图片下载器python爬虫,简陋的pixabay图片下载器python爬虫,简陋的pixabay图片下载器python爬虫,简陋的pixabay图片下载器python爬虫,简陋的pixabay...

    简陋的网上论坛

    《简陋的网上论坛》项目基于Web应用开发技术,利用Eclipse集成开发环境与SQL Server 2012数据库系统构建。该项目虽被形容为“简陋”,但其功能涵盖了一个基本在线论坛的核心要素,包括用户注册登录、发帖、回帖、...

    播放器的制作(简陋版)

    根据提供的标题“播放器的制作(简陋版)”和描述,我们可以推断这是一个学习项目,旨在实现基础的音乐播放功能,并且已经实现了歌词显示。我们将分析这个过程中的关键知识点,以及可能的改进方向。 首先,C#是一种...

    2018春季学期JAVA期末大作业-汉诺塔简陋小游戏.zip

    2018春季学期JAVA期末大作业---汉诺塔简陋小游戏2018春季学期JAVA期末大作业---汉诺塔简陋小游戏2018春季学期JAVA期末大作业---汉诺塔简陋小游戏2018春季学期JAVA期末大作业---汉诺塔简陋小游戏2018春季学期JAVA期末...

    desgin 非常简陋的demo

    1. 需求分析:理解产品的目标用户、功能需求以及业务目标。 2. 研究与竞品分析:研究竞争对手的产品,了解市场上的最佳实践。 3. 用户画像与场景构建:为不同类型的用户创建代表性的角色,设定使用情境。 4. 原型...

    Demo-StarForce无封装简陋不完全版1

    Demo-StarForce无封装简陋不完全版1 本资源是关于Game Framework的 Demo-StarForce 无封装简陋不完全版1,旨在帮助初学框架的开发者快速了解Game Framework的基础功能。下面是从标题、描述、标签和部分内容中生成的...

    非常简陋的一个新闻客户端

    1. **ViewPager**: ViewPager是Android SDK中的一个组件,用于在屏幕之间进行平滑的左右滑动切换。在新闻客户端中,ViewPager通常用于展示多个页面,如不同类别的新闻列表或文章。 2. **Fragment**: Fragment是...

    socket实现的简陋的聊天室

    本项目“socket实现的简陋的聊天室”是一个基于Socket技术的简单应用,旨在帮助嵌入式学习者理解如何使用Socket进行基本的网络通信。在这个小项目中,开发者创建了一个可以让多个用户连接并进行文字交流的环境。 ...

    控制台版超简陋2048游戏

    黑黑的控制台写的2048.真的很简陋啊有木有,不过呢,主要是算法

    c语言简陋学生管理系统

    c语言简陋学生管理系统 自己写的,比较简单,能用的拿走

    简陋的jsp聊天室页面(含mysql数据库)

    1. **JSP(JavaServer Pages)**:JSP是Java EE平台的一部分,用于创建动态网页。它允许开发者在HTML中嵌入Java代码,或者使用JSP标签库,如JSTL,来处理服务器端逻辑。在这个聊天室中,JSP可能被用来处理用户的输入...

    一款十分简陋的购书网站

    1. **MVC(Model-View-Controller)模式**:这是一种常见的软件设计模式,用于分离应用程序的数据逻辑、用户界面和业务逻辑。Spring框架支持这种模式,使得代码结构更加清晰。 2. **Spring Boot**:简化Spring应用...

    5chess(极简陋五子棋)

    极简陋的人机五子棋 第一版 电脑目前只会随机下,还没加AI。估值和算法不好做,数学基础太好,只会加减乘除--||。 界面这块一直是我极度避免的,所以..你们懂得。 也希望好人能顺便稍微轻度的。。。搞搞GUI。 ...

    一个简陋的贪吃蛇

    贪吃蛇代码,没写注释,但是程序的函数名可以很容易知道是什么意思

    网上书店jsp简陋的原理源码

    【网上书店jsp简陋的原理源码】是一个用于学习JSP(JavaServer Pages)和相关技术的项目,它提供了一个基础的在线购书平台的实现。这个项目的主要目的是帮助开发者理解JSP、Servlet以及session在实际应用中的工作...

    我写的一个超级简陋的 bbs 应用。

    我写的一个超级简陋的 bbs 应用。 .....................................................................

    非常简陋的论坛页(html+jquery+div+css)

    1. 动态加载:当用户滚动页面时,使用AJAX获取更多帖子,而不是一次性加载所有内容。 2. 表单验证:在用户提交帖子或回复前,验证输入是否符合规定格式,如检查用户名和内容的长度。 3. 动画效果:添加一些交互性,...

    MVC简陋后台

    1. **MVC架构**:理解模型、视图和控制器的职责,如何通过它们协作来构建Web应用。 2. **ASP.NET MVC 4**:学习其特性和改进,如移动设备支持,以及如何在VS2010中创建和配置MVC项目。 3. **代码优先开发**:了解...

Global site tag (gtag.js) - Google Analytics