`
大象06
  • 浏览: 119455 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Java启动多线程,同时启动几个没有关系的任务

    博客分类:
  • Java
 
阅读更多

最近在和线程打交道,要同时启动多个线程,并且每个线程要做不同的任务,最开始,我用的是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();
	}
}
 

 

分享到:
评论
2 楼 overshit 2013-02-01  
断点调试没事,不打断点就被和谐了
1 楼 overshit 2013-02-01  
我也是这么做的,发现有一个runnable不运行,直接跳到后面的scheduleWithFixedDelay^

相关推荐

    Java多线程知识点总结

    Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。在Java中,线程的生命周期包含五个基本状态,分别是新建状态(New)、就绪...

    java实现多线程文件传输

    多线程允许我们同时处理多个任务,这对于大文件传输或需要并行处理的场景尤其有用。本篇文章将深入探讨如何使用Java实现多线程文件传输,并涵盖以下几个关键知识点: 1. **线程基础**:在Java中,线程是程序执行的...

    Java多线程编程

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,多线程主要通过`Thread`类和并发工具来实现,接下来我们将深入探讨这些关键知识点。 1. **...

    java多线程下载器

    在Java中实现多线程下载主要涉及以下几个核心概念和技术: 1. **线程(Thread)**:Java中的`Thread`类是进行多线程操作的基础。每个线程负责下载文件的一部分。创建一个新的线程对象并调用其`start()`方法可以启动...

    java中的多线程实例详解(自己去运行看结果)

    它允许程序同时执行多个任务,从而提高系统效率和响应性。本文将深入探讨Java多线程的实例,帮助读者理解其工作原理和实际应用。 首先,我们需要了解线程的基本概念。在Java中,线程是程序的单一顺序控制流,每个...

    java基础多线程练习题(1)

    在Java编程语言中,多线程是核心特性之一,它使得程序可以同时执行多个不同的任务,从而提高了系统资源的利用率和程序的响应速度。本文将深入探讨Java中的多线程概念,以及如何通过实践来提升对这一主题的理解。 ...

    Java多线程网络爬虫(时光网为例)源码

    在使用多线程爬虫时,还需要考虑以下几个关键点: - 线程安全:当多个线程同时访问共享资源时,需要确保数据一致性,避免竞态条件。可以使用`synchronized`关键字或者`Lock`接口来控制并发访问。 - 爬虫速度控制:...

    java 多线程交互简单范例

    在Java编程语言中,多线程是并发执行多个任务的核心机制。这个压缩包中的文件提供了几个关于Java多线程交互的实例,可以帮助我们深入理解如何在并发环境中控制线程的同步,确保数据的一致性和安全性。 首先,让我们...

    【JAVA多线程】多线程编程核心技术学习资料

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在现代计算机系统中,多线程技术尤其关键,因为它们能够充分利用多核处理器的能力。这份"Java多线程编程...

    java线程定时启动

    ### Java线程定时启动知识点详解 ...然而,需要注意的是,`Timer`和`TimerTask`并不是多线程的最佳实践之一,对于更复杂的任务管理,可以考虑使用Java并发API中的`ScheduledExecutorService`等高级特性。

    Java多线程的简单应用

    Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应性。在Java中,实现多线程有两种主要方式:通过继承Thread类或者实现Runnable接口。本示例可能是一个Applet,Applet是Java小...

    JAVA多线程聊天工具

    在Java编程领域,多线程技术是实现高效...总之,"JAVA多线程聊天工具"是一个涵盖Java多线程、网络编程、并发控制等多个技术领域的项目,通过实践它可以深入理解和掌握这些关键技术,同时也能锻炼到实际的软件开发能力。

    Java多线程的经典资料.rar

    Java多线程是Java编程中的核心概念,它允许程序同时执行多个任务,极大地提升了软件的效率和并发性。这份“Java多线程的经典资料.rar”压缩包包含了一份名为“Java线程.pdf”的文档,很可能是关于Java多线程的详细...

    JAVA多线程的一个带UI界面的例子

    在Java编程中,多线程是一项关键特性,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在GUI(图形用户界面)应用程序中,多线程尤为重要,因为主线程通常负责处理用户交互,而其他后台任务则应在...

    java多线程下载工具,仿照迅雷

    Java多线程下载工具,其核心思想是利用Java的并发特性来提高文件下载速度,模拟类似迅雷的高效下载体验。在实现这样的工具时,我们需要理解并掌握以下几个关键知识点: 1. **线程与并发**:Java中的多线程是通过`...

    java多线程视频1

    Java多线程是Java编程中的核心概念,尤其在开发高性能、高并发的应用时,多线程技术显得尤为重要。本系列视频教程将深入讲解Java多线程的各个方面,帮助你掌握如何在Java环境中创建、管理以及优化多线程程序。 首先...

    java多线程源码-source

    Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了系统的效率和响应性。在Java中,实现多线程主要有两种方式:继承Thread类和实现Runnable接口。接下来,我们将深入探讨这两个方法以及相关的...

    java 多线程下载 (单文件)

    Java多线程下载技术主要应用于提高大文件下载的效率,通过将文件分割成多个部分,同时启动多个线程分别下载这些部分,从而实现并行下载,加快下载速度。以下是对这个主题的详细解释: 1. **Java多线程基础**: 在...

    java多线程.pdf

    Java多线程还涉及到线程的生命周期,包括新建、就绪、运行、阻塞和死亡几个状态。新建状态是指线程对象被创建后尚未启动,就绪状态意味着线程具备了运行的所有条件,等待系统调度。运行状态是指线程在CPU上运行,...

Global site tag (gtag.js) - Google Analytics