用Thread替代Timer——简单的多线程处理(一)

工作需要一个动态的窗口,有自动倒计时、后台发送数据、后台打印等功能。

第一版Demo采用了Timer作为后台处理机制核心,代码量少,可读性高。但是实际效果差强人意,特别是多timer阻塞的情况很严重。

总结了一下实际需求和后台事件,决定用Thread代替原有的Timer。

顺便一提,C#的Thread加上语法糖真是甜,原来需要写一大段的代码现在只要一行:

Thread t = new Thread(() => void(parameter));
t.IsBackground = true;//设置线程为后台线程,不阻塞主线程。
t.Start();

如果以前写个有参数的线程……我都快忘记该怎么写了。

http://www.cnblogs.com/zyh-nhy/archive/2009/01/07/1371249.html

这个网址有写法总结,需要的各位可以去这里看看。

多线程中,操作界面为安全考虑需要用到委托,在这里再次赞一下现在的语法糖:

control.BeginInvoke(new Action(() =>
{
control.Text="text";
}));

我已经不想找以前怎么声明一套委托了。需要的各位请自己百度吧。

当年用2005+2.0写代码的日子浮现眼前,那会儿用委托写个多线程感觉好繁琐。

基本需求确认,需要的基本技术确认。

下一篇开始,将会从最简的方法开始写一篇基本WinForm+多线程的动态窗口。

如果你是初学者,建议你下载vs2015,可以和我一起开始从项目创建开始学习简单的多线程操作。

本文计划写完后你可以得到一个具有简单线程管理功能的WinForm程序,你可以学到简单的线程管理和多线程任务处理。

时间: 2024-10-29 04:17:50

用Thread替代Timer——简单的多线程处理(一)的相关文章

任务调度(四)——ScheduledExecutorService替代Timer,实现多线程任务调度

       上篇博文<任务调度(三)--Timer的替代品ScheduledExecutorService简介>已经对ScheduledExecutorService做了简单介绍,其实使用ScheduledExecutorService来替代Timer也是迫不得已的事情.主要原因如下: Timer不支持多线程,所有挂在Timer下的任务都是单线程的,任务只能串行执行,如果其中一个任务执行时间过长,会影响到其他任务的执行,然后就可能会有各种接踵而来的问题. Timer的线程不捕获异常,Time

wxPython定时器wx.Timer简单应用实例

本文实例讲述了wxPython定时器wx.Timer简单应用.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 # -*- coding: utf-8 -*- ###################################

Android中断并重启一个Thread线程的简单方法

这里简单的总结下(大概思路,没调试,可能会有错!): MyThread.java pulbic class MyThread implemets Thread{ @overide public void run{ while(!Thread.interrputed()){ } } } xxx.java Thread mThread = new MyThread(); public static void startThread(){ mThread = new MyThread(); mThre

JAVA TIMER简单用法学习

Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data),2:在某个固定的时间之后(int delay).这两种方式都可以指定任务执行的频率.看个简单的例子: 复制代码 代码如下: import java.io.IOException; import java.util.Timer; public class TimerTest { public static void main(String[] args){ Timer timer =

JAVA TIMER简单用法学习_java

Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data),2:在某个固定的时间之后(int delay).这两种方式都可以指定任务执行的频率.看个简单的例子: 复制代码 代码如下: import java.io.IOException;import java.util.Timer; public class TimerTest {     public static void main(String[] args){           T

Timer的缺陷 用ScheduledExecutorService替代

转自:  http://blog.csdn.net/lmj623565791/article/details/27109467 1.Timer管理延时任务的缺陷 a.以前在项目中也经常使用定时器,比如每隔一段时间清理项目中的一些垃圾文件,每个一段时间进行数据清洗:然而Timer是存在一些缺陷的,因为Timer在执行定时任务时只会创建一个线程,所以如果存在多个任务,且任务时间过长,超过了两个任务的间隔时间,会发生一些缺陷:下面看例子: Timer的源码: [java] view plaincopy

[python] 专题八.多线程编程之thread和threading

        就个人而言,学了这么多年的课程又写了这么多年的程序,虽然没有涉及到企业级的项目,但还是体会到了有几个知识点是非常重要的,包括:面向对象的思想.如何架构一个项目.设计模式来具体解决问题.应用机器学习和深度学习的方法,当然也包括我这篇文章的内容--多线程和并行化处理数据.        这篇文章主要是参考Wesley J. Chun的<Python核心编程(第二版)>书籍多线程部分,并结合我以前的一些实例进行简单分析.尤其是在大数据.Hadoop\Spark.分布式开发流行的今天,

使用Timer和ScheduledThreadPoolExecutor执行定时任务

定时任务是在指定时间执行程序,或周期性执行计划任务.Java中实现定时任务的方法有很多,主要JDK自带的一些方法以及开源程序如Qurtz. 1.Timer和TimerTask Timer只是充当了一个执行者的角色,真正的任务逻辑是通过一个叫做TimerTask的抽象类完成的,TimerTask也是java.util包下面的类, 它是一个实现了Runnable接口的抽象类,包含一个抽象方法run( )方法,需要我们自己去提供具体的业务实现. Timer 的优点在于简单易用,但由于所有任务都是由同一

任务调度(二)——jdk自带的Timer 动态修改任务执行计划

       上一篇博文<任务调度(一)--jdk自带的Timer>中,简单介绍了一下Timer,本文将分享一下如何动态修改Timer制定的计划.        先上代码: package com.tgb.ccl.schema.dynamic; import java.util.Date; /** * 可动态修改的任务 * * @author arron * @date 2015年5月9日 下午1:52:15 * @version 1.0 */ public class DynamicTime