`
大象06
  • 浏览: 118527 次
  • 性别: 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中,实现多线程有几种方式:...

    浅谈Android中多线程切换的几种方法

    多线程切换,大概可以切分为这样几个内容:如何开启多个线程,如何定义每个线程的任务,如何在线程之间互相通信。 Thread Thread可以解决开启多个线程的问题。 Thread是Java中实现多线程的线程类,每个Thread对象都...

    JAVA上百实例源码以及开源项目源代码

    第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的调用示例 7个目标文件 摘要:Java源码,初学实例,EJB调用实例  各种EJB之间的调用源码...

    JAVA上百实例源码以及开源项目

    第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的调用示例 7个目标文件 摘要:Java源码,初学实例,EJB调用实例  各种EJB之间的调用源码...

    java jdk实列宝典 光盘源代码

    更改组建外观,对日历设置几个显示外观(lookandfeel.java);自定义对话框DialogWindows;制作欢迎界面SplashWindow.java; 10 java图形 一个圆形按钮,当单击按钮时颜色发生变化CircleButton.java; 捕捉屏幕相当于...

    java 面试题 总结

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    基于某JAVA地剪刀石头布游戏设计——Java课程设计报告材料-.doc

    Java语言支持多个线程的同时执行,并提供多线程之间的同步机制【4】。 通过一个学期的学习,对Java有了一定的了解,为了巩固所学知识,编写一个剪刀石 头布游戏。 1剪刀石头布游戏设计思路阐述 在设计游戏时,我们...

    基于JAVA的剪刀石头布游戏设计.docx

    实现这个时针时涉及到几个技术问题: 双方如何出拳 如何同时出拳 如何判断哪方赢了 如何显示结果 剪刀石头布游戏,都是通过两个人同时出拳,然后根据双方出的拳,判定哪方是赢家。 2.2性能需求分析 准确性:在实现此...

    java线程池概念.txt

    //该线程的第一个任务,执行完后就从阻塞队列取任务执行 firstTask = null; while (task != null || (task = getTask()) != null) {//getTask()从队列去任务执行 runTask(task);//线程执行任务 task = null; } ...

    java面试800题

    volatile:volatile变量表示保证它必须是与主内存保持一致,它实际是""变量的同步"", 也就是说对于volatile变量的操作是原子型的,如用在long 或 double变量前,一般用于多线程编程。 abstract:抽象,必须重载,修饰...

    超级有影响力霸气的Java面试题大全文档

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    “打坏蛋”游戏设计,java设计

    用JAVA设计这款经典游戏,包括JAVA的技术与多线程的应用,通过Swing组件叠加来分层显示,用时间任务来启动线程。用软件工程的标准,开发方法进行科学的建模。通过数据结构的分析与规划,数据流程,总体设计几个部。...

    java大作业设计报告-JAVA聊天室.doc

    JAVA程序设计 多人聊天室 设计目的 Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高 性能、多线程和静态的语言。本次课程设计旨在应用JAVA编程语言中的网络通信,多线 程,...

    java范例开发大全

    第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程的五种基本状态 405 实例222 启动线程 405 实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索并下载(线程等待和通报) 410 实例225 模拟淘宝...

    java范例开发大全源代码

     实例131 同时显示多个文件 187  实例132 生成zip压缩文件 189  实例133 解压缩zip文件 192  实例134 生成Excel文件 194  实例135 读取Excel文件中的内容 198  实例136 生成PDF文件 199  实例137...

    Java范例开发大全 (源程序)

     第13章 多线程编程(教学视频:121分钟) 405  13.1 多线程的五种基本状态 405  实例222 启动线程 405  实例223 参赛者的比赛生活(线程休眠唤醒) 407  实例224 资源搜索并下载(线程...

    Java范例开发大全(全书源程序)

    第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程的五种基本状态 405 实例222 启动线程 405 实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索并下载(线程等待和通报) 410 实例225 ...

    java范例开发大全(pdf&源码)

    第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程的五种基本状态 405 实例222 启动线程 405 实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索并下载(线程等待和通报) 410 实例225 模拟淘宝...

    汪文君高并发编程实战视频资源全集

    │ 高并发编程第一阶段09讲、多线程与JVM内存结构的关系,虚拟机栈实验.mp4 │ 高并发编程第一阶段10讲、Thread构造函数StackSize详细讲解.mp4 │ 高并发编程第一阶段11讲、Thread构造函数StackSize详细讲解-续....

Global site tag (gtag.js) - Google Analytics