比如,有3个帐号登录的模拟线程,启用多线程分配给每个帐号,以各自执行某个任务,当任务完成第一步时候,让线程停止一段时间(各线程互不影响),然后继续。请教各位,麻烦最好给个代码片段,谢谢!
解决方案 »
- org.apache.commons.net.ftp.FTPConnectionClosedException异常产生原因
- 刷新Jtree问题
- java 范型
- Jtree中如何获取相关信息????
- 为什么JAVA如此红火的今天,连找一个像样的Web浏览器,像海底捞月!
- 怎么改变数组长度而保留已有元素值?
- Format变量提示未定义,请问缺少了什么头文件
- 一点困惑
- 怎样用javascript编程实现文件下载功能?
- 你们整天说java ,主要用来开发什么啊?我主要是:Desktop Application/applet.
- int year = Integer.parseInt(args[0]);是什么意思?
- 组件的靠右侧对齐
Thread.sleep(1000);
synchronized{
'''''
Thread.sleep(XXXXXXX);
}
有的话 wait
this.wait();
this.yield();
this.jion();其中的this是Thread或者Runnable的子类/实现类,也就是你希望延时的那个线程
不是用sleep方法可以让线程休息吗
Thread.sleep(1000);
比如,一个备份操作,不需要每秒备份,可能隔一个钟头一次。是否,用线程来实现并不妥当? 用 Quartz 来实现更好?问题是,我的实际需要并不是做备份这样的事情,是这样一个应用,自动登录帐号,每隔N秒发表一篇文章,当发送文章数量达到N个时,线程退出。
有的话 wait同意这个,有时候利用SMTP连接远程服务器发送邮件,比如N多邮件,你用一个FOR循环去遍历EMAIL地址,然后发送,他几秒就循环完了,发送速度不可能有那么快,有的服务器来不及销毁会话,就报错,这情况,定义一个标记,到一定情况后,线程停一下, 拙见
当然不能让一个线程在哪里睡觉了,这样会导致一个线程长时间地被占用,增加线程调度的负担。建议使用 Quartz
这里的应用不是在服务端,要用在Swing桌面程序上,所以必须要考虑同界面交互的问题。请大侠继续发表高论,不吝赐教!
确如阁下所述如此简单吗?sleep 是否能够保证时间上的精确?(如间隔1200毫秒,不超过,不少于)
try {
Thread.sleep(1000); //暂停1秒。
} catch(Exception e) {
System.out.println("A Interrupted");
}
class Processor extends Thread{
private String user;
private DoSomething doing;
public Processor(String user){
this.user = user;
doing = new DoSomething();
}
public void run(){
doing.step1(user); //做完第一步,等待
Thread.spleep(1000);//等待1秒
doing.step2(user);
。
}
}
class DoSomething{
void step1(String user){}
void step2(String user){}
......
}
三个帐号同时登录,相当于:
new Processor(a).start();// a用户登录后启动线程
new Processor(b).start();// b用户登录后启动线程
new Processor(c).start();// c用户登录后启动线程
每个用户线程中做了第一步都等待了一段时间。
synchronize? 同步?Oh , no, not about this.
private String password;
private StringBuffer o;
public Task(String username, String password, StringBuffer o){
this.username = username;
this.password = password;
this.o = o;
}
@Override
public void run() {
step1();
while(true){
try {
Thread.sleep(1000);
step2();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private void step1(){
}
private void step2(){
synchronized(o){
System.out.println(Thread.currentThread() + " "+o.reverse().toString());
}
}
}
有的话 wait觉得这句话对!