大大们,下面的是一个多线程优化的问题,怎么样才能解除第一个方法每一秒钟都要判断一次啊!
谢谢大大们呀!小弟急需哦!
public class TestRun implements Runnable {
boolean bl = true;
Thread readThread;
public void run() {
try {
while (bl) {
//第一个方法。
if(bl/* 这里不能判断时间大于一小时,因为效率不高,每一秒钟都要判断一次! */){
//这个是要每隔一小时运行一次!
int x = 0;
System.out.println("现在时间:" + x);
}
//第二个方法。
if (bl) {
//这个是要每隔一秒钟运行一次!
int y = 1;
System.out.println("现在的数:" + y);
}
Thread.sleep(1000);
//现在是每隔一秒钟,第二个方法要运行一次,但是第一个方法需要每隔一小时运行一次。
//能不能做成两个类,都重写run(),一个写sleep()一小时,一个一分钟,但是线程好像只能跑一个吧!怎么啊?
//分离方法的主要目的是优化代码,不让第一个方法每一秒钟都判断一次,这样效率很低!
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void startThread() {
if (bl) {
readThread = new Thread(this);
readThread.start();
}
}
public static void main(String[] args) {
TestRun tr = new TestRun();
tr.startThread();
}
}
谢谢大大们呀!小弟急需哦!
public class TestRun implements Runnable {
boolean bl = true;
Thread readThread;
public void run() {
try {
while (bl) {
//第一个方法。
if(bl/* 这里不能判断时间大于一小时,因为效率不高,每一秒钟都要判断一次! */){
//这个是要每隔一小时运行一次!
int x = 0;
System.out.println("现在时间:" + x);
}
//第二个方法。
if (bl) {
//这个是要每隔一秒钟运行一次!
int y = 1;
System.out.println("现在的数:" + y);
}
Thread.sleep(1000);
//现在是每隔一秒钟,第二个方法要运行一次,但是第一个方法需要每隔一小时运行一次。
//能不能做成两个类,都重写run(),一个写sleep()一小时,一个一分钟,但是线程好像只能跑一个吧!怎么啊?
//分离方法的主要目的是优化代码,不让第一个方法每一秒钟都判断一次,这样效率很低!
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void startThread() {
if (bl) {
readThread = new Thread(this);
readThread.start();
}
}
public static void main(String[] args) {
TestRun tr = new TestRun();
tr.startThread();
}
}
解决方案 »
- 关于集合的选择
- Java中的"..."是什么意思?
- 该数组如何排序
- 问个弱弱的问题!在java中怎么把int型转换成string
- 关于保存bufferedimage为gif文件的问题
- 紧急啊,在Java 应用服务器版已经开了一篇50分的帖子了,解决后70分都是你的。
- TankGame
- 如何获得一个包中所有类的类名称,并把这些类名存放在一个容器中???
- 如何不用设立数据源连接jdbc + Access 数据库?
- 看似简单,不一定容易!
- struts logic:iterate 大家帮我看看这个该怎么取
- 我想把 compress & encode 的 CODEPAGE=936 中文 BYTE的数组 decode & decompress
如果自己编写代码,应该采用一定的设计模式,一个类,不好搞定两件事情,而且,类似的事情,可能还会在添加进去。
仍然是一个线程的类,初始化出两个线程,根据传入不同的参数区分是否要检查第一个方法,而且,我觉得使用第一个方法的线程可以wait在第二个方法的线程上,让一直跑着的第二个方法检查前面的线程是否已经有一个小时了,不知道我说的你明白没有,呵呵
不过很是谢谢!
//这个是要每隔一秒钟运行一次!
int y = 1;
System.out.println("现在的数:" + y);
}
Thread.sleep(1000); 写进for里面,让其循环3600次就行了.
dryZeng帅哥,你这个方法真棒,我试了一下!很不错!
但是变态的就是我们组长非得要我帮项目中的这个类给分离开来!
郁闷,分就分吧,但是run()中的一个方法还调用到了监听器,监听器写的还只能监听一个对象,第一个方法先得到,然后就放弃,第二个在得到,等到时间到了在remove掉,郁闷啊!!好麻烦啊啊!啊啊啊啊啊!
不知是不是这样:类A
if(bl/* 这里不能判断时间大于一小时,因为效率不高,每一秒钟都要判断一次! */){
//这个是要每隔一小时运行一次!
int x = 0;
System.out.println("现在时间:" + x);
}
Thread.sleep(1000*3600); 类B
if (bl) {
//这个是要每隔一秒钟运行一次!
int y = 1;
System.out.println("现在的数:" + y);
}
Thread.sleep(1000); 然后直接实例化A和BThread threada=new Thread(A);
Thread threadb=new Thread(B);
threada.start();
threadb.start();
它们的运行互不影响,而且时间也能控制.
不过还是非常感谢!