最近在和线程打交道,要同时启动多个线程,并且每个线程要做不同的任务,最开始,我用的是Thread,写了几个main函数来start,不过我现在发现这个方法我觉得很水,所以翻了下java的API,看到了ScheduledExecutorService这个类里面有个线程池的方法,很给力的样子,于是我就试了试。
这个类里面主要就是两个方法:
1.scheduleAtFixedRate(Runnable command, long initialDelay,long period,TimeUnit unit)
创建并执行一个在给定初始延迟后首次启用的定期操作,后续操作具有给定的周期;也就是将在 initialDelay 后开始执行,然后在 initialDelay+period 后执行,接着在 initialDelay + 2 * period 后执行,依此类推。如果任务的任一执行遇到异常,都会取消后续执行。否则,只能通过执行程序的取消或终止方法来终止该任务。
2.scheduleWithFixedDelay(Runnable command,long initialDelay, long delay,TimeUnit unit)
创建并执行一个在给定初始延迟后首次启用的定期操作,随后,在每一次执行终止和下一次执行开始之间都存在给定的延迟。如果任务的任一执行遇到异常,就会取消后续执行。否则,只能通过执行程序的取消或终止方法来终止该任务。
实现代码如下:
package com.cnas.thread;
import java.io.File;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import com.cnas.csvAnalysis.Analyze;
import com.cnas.dispatchPool.ListDir;
import com.cnas.ftp.FTPDownload;
import com.cnas.global.GlobalsConfig;
/**
* 线程池
* @author yKF41624
* @date 2011-8-26 modified by yang
*/
public class StartDispatch {
private static File file = new File(GlobalsConfig.getfileuploadFlode());
private ScheduledExecutorService sch = Executors.newScheduledThreadPool(1);
public StartDispatch() {
System.out.println("All Threads Started!");
}
/**
* 扫描文件目录线程
*/
public void scanFile() {
Runnable runnable = new Runnable() {
public void run() {
System.out.println("testfile");
}
};
sch.scheduleWithFixedDelay(runnable, 1, 10, TimeUnit.SECONDS);
}
/**
* 扫描数据库
*/
public void scanDB() {
Runnable runnable = new Runnable() {
public void run() {
System.out.println("testdb...");
}
};
sch.scheduleWithFixedDelay(runnable, 1, 10, TimeUnit.SECONDS);
}
public static void main(String[] args) {
StartDispatch thread = new StartDispatch();
thread.scanFile();
thread.scanDB();
}
}
分享到:
相关推荐
Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。在Java中,线程的生命周期包含五个基本状态,分别是新建状态(New)、就绪...
多线程允许我们同时处理多个任务,这对于大文件传输或需要并行处理的场景尤其有用。本篇文章将深入探讨如何使用Java实现多线程文件传输,并涵盖以下几个关键知识点: 1. **线程基础**:在Java中,线程是程序执行的...
Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,多线程主要通过`Thread`类和并发工具来实现,接下来我们将深入探讨这些关键知识点。 1. **...
### Java多线程编程知识点详解 #### 一、引言 在现代软件开发中,多线程编程是一项不可或缺的技术,尤其是在高性能和响应性要求较高的应用中。Java作为一种广泛使用的编程语言,提供了强大的多线程支持。本文将...
在Java中实现多线程下载主要涉及以下几个核心概念和技术: 1. **线程(Thread)**:Java中的`Thread`类是进行多线程操作的基础。每个线程负责下载文件的一部分。创建一个新的线程对象并调用其`start()`方法可以启动...
它允许程序同时执行多个任务,从而提高系统效率和响应性。本文将深入探讨Java多线程的实例,帮助读者理解其工作原理和实际应用。 首先,我们需要了解线程的基本概念。在Java中,线程是程序的单一顺序控制流,每个...
在Java编程语言中,多线程是核心特性之一,它使得程序可以同时执行多个不同的任务,从而提高了系统资源的利用率和程序的响应速度。本文将深入探讨Java中的多线程概念,以及如何通过实践来提升对这一主题的理解。 ...
在使用多线程爬虫时,还需要考虑以下几个关键点: - 线程安全:当多个线程同时访问共享资源时,需要确保数据一致性,避免竞态条件。可以使用`synchronized`关键字或者`Lock`接口来控制并发访问。 - 爬虫速度控制:...
在Java编程语言中,多线程是并发执行多个任务的核心机制。这个压缩包中的文件提供了几个关于Java多线程交互的实例,可以帮助我们深入理解如何在并发环境中控制线程的同步,确保数据的一致性和安全性。 首先,让我们...
Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在现代计算机系统中,多线程技术尤其关键,因为它们能够充分利用多核处理器的能力。这份"Java多线程编程...
### Java线程定时启动知识点详解 ...然而,需要注意的是,`Timer`和`TimerTask`并不是多线程的最佳实践之一,对于更复杂的任务管理,可以考虑使用Java并发API中的`ScheduledExecutorService`等高级特性。
Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应性。在Java中,实现多线程有两种主要方式:通过继承Thread类或者实现Runnable接口。本示例可能是一个Applet,Applet是Java小...
在Java编程领域,多线程技术是实现高效...总之,"JAVA多线程聊天工具"是一个涵盖Java多线程、网络编程、并发控制等多个技术领域的项目,通过实践它可以深入理解和掌握这些关键技术,同时也能锻炼到实际的软件开发能力。
Java多线程是Java编程中的核心概念,它允许程序同时执行多个任务,极大地提升了软件的效率和并发性。这份“Java多线程的经典资料.rar”压缩包包含了一份名为“Java线程.pdf”的文档,很可能是关于Java多线程的详细...
在Java编程中,多线程是一项关键特性,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在GUI(图形用户界面)应用程序中,多线程尤为重要,因为主线程通常负责处理用户交互,而其他后台任务则应在...
Java多线程下载工具,其核心思想是利用Java的并发特性来提高文件下载速度,模拟类似迅雷的高效下载体验。在实现这样的工具时,我们需要理解并掌握以下几个关键知识点: 1. **线程与并发**:Java中的多线程是通过`...
Java多线程是Java编程中的核心概念,尤其在开发高性能、高并发的应用时,多线程技术显得尤为重要。本系列视频教程将深入讲解Java多线程的各个方面,帮助你掌握如何在Java环境中创建、管理以及优化多线程程序。 首先...
Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了系统的效率和响应性。在Java中,实现多线程主要有两种方式:继承Thread类和实现Runnable接口。接下来,我们将深入探讨这两个方法以及相关的...
Java多线程下载技术主要应用于提高大文件下载的效率,通过将文件分割成多个部分,同时启动多个线程分别下载这些部分,从而实现并行下载,加快下载速度。以下是对这个主题的详细解释: 1. **Java多线程基础**: 在...
Java多线程还涉及到线程的生命周期,包括新建、就绪、运行、阻塞和死亡几个状态。新建状态是指线程对象被创建后尚未启动,就绪状态意味着线程具备了运行的所有条件,等待系统调度。运行状态是指线程在CPU上运行,...