包含java延时通知的词条
今天给各位分享java延时通知的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java远程调用ejb,但是对方返回消息有延时,如何解决?求高人指点
- 2、java 消息过期通知
- 3、怎样让“java”延迟函数?
- 4、java代码延迟30秒
- 5、java通知服务器,按照一定规律间隔时间向某端口发通知
- 6、Java语句延时
java远程调用ejb,但是对方返回消息有延时,如何解决?求高人指点
己方系统通过ejb远程调用方式调用对方系统的方法,对方系统的方法进行处理,处理完后将返回值传给己方系统,同步的ejb远程调用没有办法做到只等待对方系统一分钟。
一般有两种处理方法:
1、对方系统进行性能优化,减少方法的执行时间。
2、修改己方系统和对方系统的通信协议。由一个远程方法处理完直接返回结果修改为两个方法,首先,己方系统调用对方系统的一个方法通知对方做某个处理,通知完立刻返回,对方系统异步进行处理,处理完后对方系统调用己方系统的另一个方法告诉己方系统处理的结果。
java 消息过期通知
这样吧,我是根据前面同学的思路以生产者-消费者方式完成的一个java小demo。
第一个类:
共享值类。
public class ShareValue {
private int count;
public ShareValue(int count) {
this.count = count;
}
public synchronized void plus() throws InterruptedException {
if (count = 100) {
++count;
System.out.println("Producer:" + count);
this.notifyAll();
} else {
System.out.println("值超过100,停止增加!");
this.wait();
}
}
public synchronized void minus() throws InterruptedException {
if (count 0) {
--count;
System.err.println("Consumer:" + count);
this.notifyAll();
} else {
System.out.println("值小或等于0,停止减少!");
this.wait();
}
}
}
第二个类:
生产者类
public class Producer implements Runnable {
private ShareValue value;
public Producer(ShareValue value) {
this.value = value;
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
try {
value.plus();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
第三个类:
消费者类
public class Consumer implements Runnable {
private ShareValue value;
public Consumer(ShareValue value) {
this.value = value;
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
try {
value.minus();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
第四个:
测试类
public class TestPC {
public static void main(String[] args) {
ShareValue value = new ShareValue(0);
Runnable pr = new Producer(value);
Runnable cr = new Consumer(value);
new Thread(pr).start();
new Thread(cr).start();
}
}
希望对你有所帮助,这只是能初步跑起来,可以观察运行,后面可以逐步调整。
怎样让“java”延迟函数?
Java中主要有以下方法来实现延迟
普通延时用Thread.sleep(int)方法,这很简单。它将当前线程挂起指定的毫秒数。如
try
{
Thread.currentThread().sleep(1000);//毫秒
}
catch(Exception e){}
在这里需要解释一下线程沉睡的时间。sleep()方法并不能够让程序"严格"的沉睡指定的时间。例如当使用5000作为sleep()方法的参数时,线 程可能在实际被挂起5000.001毫秒后才会继续运行。当然,对于一般的应用程序来说,sleep()方法对时间控制的精度足够了。
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
java代码延迟30秒
setTimeout()在js类中的使用方法
setTimeout (表达式,延时时间)
setTimeout(表达式,交互时间)
延时时间/交互时间是以豪秒为单位的(1000ms=1s)
setTimeout 在执行时,是在载入后延迟指定时间后,去执行一次表达式,仅执行一次
setTimeout 在执行时,它从载入后,每隔指定的时间就执行一次表达式
1,基本用法:
执行一段代码:
var i=0;
setTimeout("i+=1;alert(i)",1000);
执行一个函数:
var i=0;
setTimeout(function(){i+=1;alert(i);},1000);
//注意比较上面的两种方法的不同。
下面再来一个执行函数的:
var i=0;
function test(){
i+=1;
alert(i);
}
setTimeout("test()",1000);
也可以这样:
setTimeout(test,1000);
总结:
setTimeout的原型是这样的:
iTimerID = window.setTimeout(vCode, iMilliSeconds [, sLanguage])
setTimeout有两种形式
setTimeout(code,interval)
setTimeout(func,interval,args)
其中code是一个字符串
func是一个函数.
注意"函数"的意义,是一个表达式,而不是一个语句.
比如你想周期性执行一个函数
function a(){
//...
}
可写为
setTimeout("a()",1000)
或
setTimeout(a,1000)
这里注意第二种形式中,是a,不要写成a(),切记!!!
展开来说,不管你这里写的是什么,如果是一个变量,一定是一个指向某函数的变量;如果是个函数,那它的返回值就 要是个函数
2,用setTimeout实现setInterval的功能
思路很简单,就是在一个函数中调用不停执行自己,有点像递归
var i=0;
function xilou(){
i+=1;
if(i10){alert(i);return;}
setTimeout("xilou()",1000);
//用这个也可以
//setTimeout(xilou,1000);
}
java通知服务器,按照一定规律间隔时间向某端口发通知
提供给你一个思路,可能不是最优解决方案。使用quartz,设置时间段,比如早上7:00-12:00每2min执行一次,建立一个任务详情表(或者在你的业务表中扩展一个字段也可以),包含字段:日期,通知阶段。任务执行逻辑:
查询当天是否有任务执行记录,如果没有则插入,表示当天第一次执行。如果有,则查询当前的执行阶段是多少,比如是2min,10min等等。。然后把当前系统时间与执行阶段做比较,如果没有到达下一个应该执行任务的阶段就直接return,不执行。
-------------------另外quartz可以设置线程是否单例,如果上一个线程正在执行任务,那么等上一个线程关闭才会执行下一个任务。这样就不会new很多线程出来了。 具体的可以参见quartz手册
Java语句延时
下面这个是我以前回答别的人的问题,现在刚好可以回答你的这个,我就拷过来了,给你参考一下吧
java.util.Timer
用这下面的TimeTask类(指定延时)
java里面的sleep()并不能精确定时,TimeTask可以:例下面的小程序:
import java.util.*;
public class test{
public static void main (String []args){
Timer timer=new Timer();//实例化Timer类
timer.schedule(new TimerTask(){
public void run(){
System.out.println("退出");
this.cancel();}},5000);//这里百毫秒
System.out.println("本程序存在5秒后自动退出");
}
}
java延时通知的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、java延时通知的信息别忘了在本站进行查找喔。
发布于:2022-12-19,除非注明,否则均为
原创文章,转载请注明出处。