package test;
import java.io.Serializable;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class SunThread implements Runnable{
private String name;
public void run() {
for(int i=0;i<10;i++){
System.out.println(i+name);
}
}
public SunThread(String name){
this.name = name;
}
//Serializable 是为了方便下载跨域
public static class ThreadPoolTask implements Runnable, Serializable {
private static final long serialVersionUID = 0;
// 保存任务所需要的数据,并通过构造器给其赋值,例:SQL
private Object threadPoolTaskData;
ThreadPoolTask(Object sql) {
this.threadPoolTaskData = sql;
}
public void run() {
System.out.println(threadPoolTaskData);
threadPoolTaskData = null;
}
}
public static void main(String[] args) {
//这就是2个线程 随机执行
new Thread(new SunThread("sdy")).start();
new Thread(new SunThread("dhh")).start();
int minThreadSize=2; //线程池最小的线程数量
int maxThreadSize=4; //线程池最大的线程数量
int keepAliveTime=3; //空闲时间
// 构造一个线程池
ThreadPoolExecutor threadPool = new ThreadPoolExecutor
(
minThreadSize,maxThreadSize,keepAliveTime,
TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(3),
new ThreadPoolExecutor.CallerRunsPolicy()
);
for (int i = 1; i <= 10; i++) {//产生10个线程
try {
//产生一个任务,并将其加入到线程池,通过线程池管理释放
threadPool.execute(new ThreadPoolTask("test "+i));
}catch (Exception e) {
e.printStackTrace();
}
}
threadPool.shutdown();//全部任务完成后,关闭线程池
}
}
说来惭愧,好久没有关注线程方面的东西,对这方面一直都是迷迷糊糊,最近无聊研究了下,今天恍然大悟....
自己还真是笨的可以, new Thread 就是一个线程,多个就是多线程....
线程池就是一个容器,管理多个 Thread OMG。估计是一直以来心情都不好,今天总算是顿悟了,原来就是那么简单.......
由于是简单的测试,就在里面加了个静态类,稍微拆分一下就更清晰了。
希望这些代码也能给那些新手带来启发吧。哇咔咔~
分享到:
相关推荐
本篇文章将详细探讨“常用多线程模板”以及“鱼刺类(Fork/Join框架)多线程线程池”的应用,结合具体的代码实例来帮助理解这些概念。 首先,多线程是指在一个程序中同时执行多个不同的线程,以实现并行处理。在...
在IT行业中,多线程是程序设计中的一个重要概念,特别是在处理并发操作时,如网络服务、数据处理和用户界面更新等。多线程允许程序同时执行...通过源码学习,我们可以深化对多线程和线程池的理解,提升我们的编程能力。
在IT行业中,多线程和线程池是并发编程中的重要概念,特别是在Java、C#等面向对象语言中。线程池是一种管理线程资源的技术,它可以提高系统效率,减少线程创建和销毁的开销。下面将详细介绍线程池的工作原理、优势...
【标题】"火山安卓编程线程池例子"主要聚焦于Android平台上的多线程编程,尤其是使用火山编程框架实现线程池的示例。在Android应用开发中,线程池是一种有效的管理并发任务的方式,它可以帮助优化系统资源的使用,...
### 多线程的自动管理(线程池) #### 概述 在现代软件开发中,多线程技术被广泛应用于提高程序的并发处理能力和效率。然而,直接管理多个线程可能会导致资源浪费、线程间竞争等问题。为了解决这些问题,引入了...
"鱼刺多线程注册源码例子"是一个基于"鱼刺多线程稳定框架"的编程实践,旨在展示如何在软件开发中有效地利用多线程技术来提高程序的执行效率和稳定性。在这个例子中,"鱼刺框架"可能是一个专门为多线程编程设计的开源...
一个易语言操作多线程的例子,分享一下,对于多线程操作,我还是觉得C++更好一点!
在编程领域,多线程是实现并发执行任务的重要技术,特别是在资源管理与性能优化方面。易语言,一种中文编程环境,提供了多种实现多线程的方法,其中包括精易模块线程池和鱼刺模块线程池。这两种线程池在易语言中的...
通过分析这个小例子,我们可以学习如何在Qt应用程序中有效地使用线程池,理解多线程编程的基本概念,以及如何优化并发任务的执行。这对于开发大型、复杂的Qt应用,尤其是那些需要大量后台处理的工作,是非常有价值的...
在给定的"C++多线程线程池服务端和客户端例子"中,我们可以深入探讨以下几个关键知识点: 1. **C++11多线程库**: C++11标准引入了`<thread>`库,提供了对多线程的支持。在这个例子中,我们可能会看到如何创建和管理...
总的来说,这个VC++ 6.0的线程池实现提供了一个学习和实践多线程编程的好例子,开发者可以通过阅读和修改源代码,深入理解线程池的工作原理和多线程编程技巧。同时,这个示例也展示了如何在用户界面中与后台线程交互...
因为本人是个小白,多线程经常用,但是线程池并没有用过,(一听到线程池,总感觉高大上)。但是近期写彩票软件的时候发现,多线程长期操作会导致内容不断的升高直至报错,遂想起了线程池,完善后发现不是一般的叼...
volatile关键字的非原子性、volatile关键字的使用、AtomicInteger原子性操作、线程安全小例子:多个线程竞争问题、多个线程多个锁问题、创建一个缓存的线程池、多线程使用Vector或者HashTable的示例(简单线程同步...
在这个“易语言-常用多线程模板与鱼刺类多线程线程池应用小例子”中,我们将探讨多线程编程在易语言中的应用,以及如何利用线程池来优化并发执行。 1. **多线程概念**:在计算机程序中,多线程是指一个程序内可以...
这个“多线程例子”演示了如何在C++环境中实现多线程功能。下面我们将深入探讨多线程的基本概念、C++中的线程库以及如何创建和管理线程。 1. **多线程概念**:在单核CPU中,多线程是通过时间片轮转的方式实现的,即...
标题中的“三个分别由单线程、多线程、线程池实现的简单网关”涉及到的是并发处理的三种常见模型。在IT行业中,尤其是在服务器端编程和高性能系统设计中,如何有效地处理并发请求是至关重要的。让我们逐一探讨这三个...
总结来说,"易语言-鱼刺线程池例子"是一个实践性的教学资源,它帮助易语言的学习者和开发者掌握多线程编程和线程池技术,从而能够更高效地编写并发程序。通过深入研究和实践这个例子,我们可以提升在易语言环境下的...
以下是对“C++多线程编程的十个例子”的详细讲解,这些例子将帮助你在Windows环境下深入理解和应用多线程。 1. **创建线程** C++11引入了`std::thread`库来创建和管理线程。例如,你可以通过传递函数或成员函数...
线程池与epoll结合,可以在多线程间共享epoll实例,提高系统资源利用率。 线程池 + epoll 的简单实现通常包括以下步骤: 1. 创建epoll实例:使用`epoll_create()`函数创建一个epoll实例,返回一个epoll文件描述符...