「java多线程定时器」定时器java编程

博主:adminadmin 2022-12-18 11:51:08 52

本篇文章给大家谈谈java多线程定时器,以及定时器java编程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java在web工程开发中如何实现多线程定时进行一项操作?

给你写个大概思路吧

//创建处理房间状态的线程类,去执行改status的操作,操作在run方法里写好

class ChangeRoomStatusProcess extends Thread {...}

//主线程创建线程池,数量自定,当前为5

ScheduledExecutorService ses = Executors.newScheduledThreadPool(5);

...

ses.shutdown();

//当某个线程将status设置为1以后,设置定时器,30秒后执行ChangeRoomStatusProcess的run方法

ses.schedule(new ChangeRoomStatusProcess(), 30000, TimeUnit.MILLISECONDS);

java大神看过来,关于java多线程并发和定时器的问题!!!

threadCount 加上锁就行了 要么是大于30 死循环了 要么是小于0死循环了。大于30那边可能性比较小,小于0那边可能性比较大。

可以在这2个地方打印日志验证一下

java定时器用什么实现

java定时器的使用(Timer)

1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。

对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。

private java.util.Timer timer;

timer = new Timer(true);

timer.schedule(

new java.util.TimerTask() { public void run()

{ //server.checkNewMail(); 要操作的方法} }, 0, 5*60*1000);

第一个参数是要操作的方法,第二个参数是要设定延迟的时间,第三个参

数是周期的设定,每隔多长时间执行该操作。

使用这几行代码之后,Timer本身会每隔5分钟调用一遍

server.checkNewMail()方法,不需要自己启动线程。Timer本身也是多线程同

步的,多个线程可以共用一个Timer,不需要外部的同步代码。

2、

(1)Timer.schedule(TimerTask task,Date time)安排在制定的时间执行指定的

任务。

(2)Timer.schedule(TimerTask task,Date firstTime ,long period)安排指定

的任务在指定的时间开始进行重复的固定延迟执行.

(3)Timer.schedule(TimerTask task,long delay)安排在指定延迟后执行指定的

任务.

(4)Timer.schedule(TimerTask task,long delay,long period)安排指定的任务

从指定的延迟后开始进行重复的固定延迟执行.

(5)Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)

安排指定的任务在指定的时间开始进行重复的固定速率执行.

(6)Timer.scheduleAtFixedRate(TimerTask task,long delay,long period)安

排指定的任务在指定的延迟后开始进行重复的固定速率执行.

用Java Timer API 进行时间调度开发的相关注意点

java.util这个包中可以找到Timer和TimerTask这两个类。Timer直接从Object

继承,它相当于一个计时器,能够用它来指定某个时间来执行一项任务,或者

每隔一定时间间隔反复执行同一个任务。创建一个Timer后,就会生成一个线程

在背后运行,来控制任务的执行。而TimerTask就是用来实现某项任务的类,

它实现了Runnable接口,因此相当于一个线程。

Java多组定时器实现求助

import java.util.*;

class MyTime

{

int hour; int minute;

MyTime(int hour,int minute){

this.hour=hour;

this.minute=minute;

}

}

public class AboutTime

{

public static void main(String args[]){

final MyTime mt=new MyTime(11,24);

//这里,假设程序运行时,是在早上8点半之前的。其他情况,你自行分析

Calendar cal=Calendar.getInstance();

//此方法获得当前地域的时间,注意,getInstance是静态方法

cal.set(cal.HOUR, mt.hour);//设置你所要等待的时刻

cal.set(cal.MINUTE, mt.minute);

Calendar cal2=Calendar.getInstance();//

long time1=cal.get(cal.HOUR_OF_DAY)*3600+cal.get(cal.MINUTE)*60;//将两个时刻都转换成秒数,以便进行相减

long time2=cal2.get(cal2.HOUR_OF_DAY)*3600+cal2.get(cal2.MINUTE)*60+cal2.get(cal2.SECOND);

final long waitTime=time1-time2;//此时获得当前时刻与要等待时刻的时间差,单位是秒

//这里说明一下,现在所指的当前时刻是“Calendar cal2=Calendar.getInstance()”这句执行时所获得的时刻

//获得后,它的各值(秒,分,时)等信息都不会改变。当然,运行几行代码,花不了几毫秒。所以

//虽然之前的cal2的时间信息与运行三行代码以后的时间信息是差不多的

System.out.println(waitTime);//此行用于测试

new Thread(new Runnable(){

public void run(){

try{

for(long l=0;lwaitTime;l++){

Thread.sleep(1000);

System.out.println("###");//一秒打一个,当然,告诉你正在计时

//这里用多线程,因为运行后,可以继续运行主线程。不影响你干其他事儿。

}

}

catch(InterruptedException e){}

System.out.println(mt.hour+":"+mt.minute+"到了");

}

}).start();

//不过,你说一天要三次计算。这很容易,如何实现,由你自己决定。

}

}

java 线程定时器

根据楼主的描述,可以有两种理解:

方法1:创建一个Timer,用于在间隔时间后调用ResultSetsql()方法

在switch值发生改变的时候对Timer进行操作

值变为0时调用timer.cancel();

值为1时调用

timer = new Timer();

timer.schedule(new TimerTask() {

public void run() {

ResultSetsql();

}

}, repeattime);

方法2:建立一个线程,每隔一秒进行循环,检查monitor switch的状态

new Thread(new Runnable() {

@Override

public void run() {

while(isRun){

if(monitor.switch == 1){

ResultSetsql();

try {

Thread.sleep(repeattime);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

}).start();

两种方法有各自的适用环境,如果楼主能继续描述就更好了

欢迎继续提问

java中使用多线程创建定时器访问数据库

为什么要定时访问数据库,这样写程序本身就不符合写软件的规则,因为会耗费比较多的系统资源

关于java多线程定时器和定时器java编程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-18,除非注明,否则均为首码项目网原创文章,转载请注明出处。