day28 进程和线程池

本文介绍了Java中的多进程和线程池的概念与使用。在多进程部分,阐述了进程的创建和数据共享特点;线程池部分讲解了如何创建线程池,以及通过submit和map方法添加任务。同时,文章还探讨了三种线程队列实现方式,包括利用列表、返回函数和队列进行数据同步。
摘要由CSDN通过智能技术生成

一、多进程

1.

一个应用程序默认有一个进程(主进程),一个进程中默认一个线程
一个应用程序可以有多个进程,每个进程可以有多个线程、
同一进程中多个线程的数据可以共享,不同进程中的数据无法直接共享

2.

一个应用程序默认有一个进程需要多个进程,需要手法创建进程
多进程程序必须添加

3.多进程使用

进程对象.Process(target = 函数,args =元组)
进程对象.star()
进程对象 .join

二、线程池

1.创建线程池

pool = ThreadPoolExecutor(5)

2.添加任务

1)一次添加一个任务 - 线程池对象.submit(函数,实参1,实参2……)

pool.submit(download, '肖申克的救赎')

2)一次添加多个任务 - 线程池对象.map(函数,[数据1,数据2,数据3……])

注:这个地方任务对应的函数必须是有且只有一个参数的函数

pool.map(download,['霸王别姬','阿甘正传','触不可及'],)

三、线程队列

from queue import Queue

1.方法一

1)在主线程中创建列表,然在子线程中直接往列表添加数据

2)等所有任务都完成后获取数据

2.方法二

1)将子线程中产生的函数作为一个返回值

2)获取map函数的返回值(返回值是一个生成器,生成器中的元素就是每次调用函数,函数的返回值)

3.方法三

1)在主线程创建一个队列

2)在子线程中往队列添加数据

3)在主线程中获取队列的数据

1)创建对象:Queue()
2)添加数据:队列对象.put(数据)
3)获取数据:队列对象.get() 队列对象.get(timeout = 超时时间)
如果队列是空,队列get操作不会报错,并且会进入等待状态,等到有数据进入队列为止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值