爱生活

 找回密码
 立即注册
搜索
查看: 130|回复: 0
打印 上一主题 下一主题

创建线程池有哪几种方式?,怎么创建线程池

[复制链接]

14万

主题

14万

帖子

-134万

积分

限制会员

跳转到指定楼层
楼主
发表于 2022-7-2 13:21:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

创建线程池有哪几种方式?


一:创建大小不固定的线程池  
二:创建固定数量线程的线程池  
三:创建单线程的线程池  
四:创建定时线程  
1.创建大小不固定的线程池
[java] view plain copy
package com.peace.pms.Test;  
import java.util.concurrent.ExecutorService;  
import java.util.concurrent.Executors;  
/** 
* @Author: cxx 
* @Date: 2018/3/3 17:16 
*/  
public class ThreadPoolDemo {  
public static class Taskdemo implements Runnable{  
@Override  
public void run() {  
for(int i=0;i<10;i++){  
System.out.println(Thread.currentThread().getName()+":"+i);  
}  
} &nb

如何创建一个Java线程池?


程序由三个类构成:
第一个是TestThreadPool类,它是一个测试程序,用来模拟客户端的请求,当运行它时,系统首先会显示线程池的初始化信息,然后提示从键盘上输入字符串,并按下回车键,这时会发现屏幕上显示信息,告诉某个线程正在处理的请求,如果快速地输入一行行字符串,那么会发现线程池中不断有线程被唤醒,来处理的请求,创建了一个拥有10个线程的线程池,如果线程池中没有可用线程了,系统会提示相应的警告信息,但如果稍等片刻,那会发现屏幕上会陆陆续续提示有线程进入了睡眠状态,这时又可以发送新的请求了。
第二个类是ThreadPoolManager类,顾名思义,它是一个用于管理线程池的类,它的主要职责是初始化线程池,并为客户端的请求分配不同的线程来进行处理,如果线程池满了,它会对发出警告信息。
最后一个类是SimpleThread类,它是Thread类的一个子类,它才真正对客户端的请求进行处理,SimpleThread在示例程序初始化时都处于睡眠状态,但如果它接受到了ThreadPoolManager类发过来的调度信息,则会将自己唤醒,并对请求进行处理。


vc如何创建 线程池
如何使用VC/MFC创建一个线程池



有许多应用程序创建的线程花费了大量时间在睡眠状态来等待事件的发生。还有一些线程进入睡眠状态后定期被唤醒以轮询工作方式来改变或者更新状态信息。线程池可以让你更有效地使用线程,它为你的应用程序提供一个由系统管理的工作者线程池。至少会有一个线程来监听放到线程池的所有等待操作,当等待操作完成后,线程池中将会有一个工作者线程来执行相应的回调函数。
   你也可以把没有等待操作的工作项目放到线程池中,用QueueUserWorkItem函数来完成这个工作,把要执行的工作项目函数通过一个参数传递给线程池。工作项目被放到线程池中后,就不能再取消了。
   Timer-queue timers和Registered wait operations也使用线程池来实现。他们的回调函数也放在线程池中。你也可以用BindIOCompletionCallback函数来投递一个异步IO操作,在IO完成端口上,回调函数也是由线程池线程来执行。
   当第一次调用QueueUserWorkItem函数或者BindIOCompletionCallback函数的时候,线程池被自动创建,或者Timer-queue timers或者Registered wait operations放入回调函数的时候,线程池也可以被创建。线程池可以创建的线程数量不限,仅受限于可用的内存,每一个线程使用默认的初始堆栈大小,运

创建线程有几种方式和Java中常用的线程池


java创建线程的方式有三种
第一种是继承Thread类  实现方法run()  不可以抛异常 无返回值
第二种是实现Runnable接口 实现方法run() 不可以抛异常 无返回值
第三种是实现Callable<T>接口,接口中要覆盖的方法是 public <T> call() 注意:此方法可以抛异常,而前两种不能 而且此方法可以有返回值

第三种如何运行呢  Callable接口在util.concurrent包中,由线程池提交
import java.util.concurrent.*;
ExecutorService e = Executors.newFixedThreadPool(10); 参数表示最多可以运行几个线程
e.submit(); 这个里面参数传 实现Callable接口那个类的对象




上一篇:螃蟹吃了胃不舒服怎么办,吃螃蟹吃多了胃不舒服怎么办
下一篇:怎样学好Java编程?,java怎么编程的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|手机版|小黑屋|爱生活 ( 蜀ICP备20006951号 )|

 

快速回复 返回顶部 返回列表