创建线程池

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import threading
import queue
import time

class ThreadPool:
    def __init__(self, maxsize=5):
        self.maxsize = maxsize
        self._q = queue.Queue(self.maxsize)  # 创建队列,队列最大容量为5
        for i in range(self.maxsize):
            self._q.put(threading.Thread)  # 循环5次,在队列中放入5个线程类名

    def get_thread(self):
        return self._q.get()  # 获取队列中一个成员

    def add_thread(self):
        self._q.put(threading.Thread)  # 在队列中增加一个成员

pool = ThreadPool()  # 实例化一个线程池

def task(arg, p):  # 创建一个函数,函数调用线程池的add_thread方法
    print(arg)
    time.sleep(1)
    p.add_thread()

for i in range(100):
    t = pool.get_thread()  # 从队列中获取一个类名 t()表示创建这个类的对象
    obj = t(target=task, args=(i, pool))
    obj.start()

  

时间: 2024-10-17 15:47:40

创建线程池的相关文章

使用Callable接口创建线程池

步骤: 创建线程池对象创建 Callable 接口子类对象提交 Callable 接口子类对象关闭线程池实例: class TaskCallable implements Callable<Integer> { @Override public Integer call() throws Exception { for (int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName()+"

【搞定面试官】你还在用Executors来创建线程池?会有什么问题呢?

前言 上文我们介绍了JDK中的线程池框架Executor.我们知道,只要需要创建线程的情况下,即使是在单线程模式下,我们也要尽量使用Executor.即: ExecutorService fixedThreadPool = Executors.newFixedThreadPool(1); //此处不该利用Executors工具类来初始化线程池 但是,在<阿里巴巴Java开发手册>中有一条 [强制]线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方

高并发之——从源码角度分析创建线程池究竟有哪些方式

前言 在Java的高并发领域,线程池一直是一个绕不开的话题.有些童鞋一直在使用线程池,但是,对于如何创建线程池仅仅停留在使用Executors工具类的方式,那么,创建线程池究竟存在哪几种方式呢?就让我们一起从创建线程池的源码来深入分析究竟有哪些方式可以创建线程池. 使用Executors工具类创建线程池 在创建线程池时,初学者用的最多的就是Executors 这个工具类,而使用这个工具类创建线程池时非常简单的,不需要关注太多的线程池细节,只需要传入必要的参数即可.Executors 工具类提供了

自定义线程池,如何最佳创建线程池

java有预置线程池:newSingleThreadExecutor,newFixedThreadPool,newCacheedThreadPool,newScheduledThreadPool,newWorkStealingPool.如果不适合,还可以使用ThreadPoolExecutor创建自定义线程池.主要构造方法: 1 public ThreadPoolExecutor(int corePoolSize, 2 int maximumPoolSize, 3 long keepAliveT

java 创建线程池的4中方式

Java线程池使用说明 线程池的作用:线程池作用就是限制系统中执行线程的数量.根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控制线程数量,其他线程排队等候.一个任务执行完毕,再从队列的中取最前面的任务开始执行.若队列中没有等待进程,线程池的这一资源处于等待.当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行了:否则进入等待队列. java中常用线程池 newSingleThreadExecutor创建一

使用ThreadPoolExecutor 创建线程池,完成并行操作

日常工作中很多地方很多效率极低的操作,往往可以改串行为并行,执行效率往往提高数倍,废话不多说先上代码 1.用到的guava坐标 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>18.0</version> </dependency> 2.创建一个枚举保证线程池是单例 package

线程池的创建

package com.newer.cn; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Test1 { public static void main(String[] args) { // 创建线程池的方式 // 创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程,在需要时使用提供的 ThreadFactory 创建新线程. E

Python之创建low版的线程池

#!/user/bin/evn python # -*- coding:utf-8 -*- import threading,time import queue #创建线程池类 class ThreadPool(object): def __init__(self,max_num=20): #创建队列 self.queue=queue.Queue(max_num) for i in range(max_num): #往队列里面依次放入20个线程类名(threading.Thread) self.

【转】线程池体系介绍及从阿里Java开发手册学习线程池的正确创建方法

jdk1.7中java.util.concurrent.Executor线程池体系介绍 java.util.concurrent.Executor : 负责线程的使用与调度的根接口  |–ExecutorService:Executor的子接口,线程池的主要接口  |–ThreadPoolExecutor:ExecutorService的实现类  |–ScheduledExecutorService:ExecutorService的子接口,负责线程的调度  |–ScheduledThreadPo