黑马程序员技术交流社区
标题:
Java如何sleep当前的全部线程?
[打印本页]
作者:
高梦晓
时间:
2013-4-16 16:36
标题:
Java如何sleep当前的全部线程?
代码如下;
public class MyClass implements Runnable{
public static void main(String[] args) {
MyClass m1 = new MyClass();
Thread t1 = new Thread(m1);
t1.start();
MyClass m2 = new MyClass();
Thread t2 = new Thread(m2);
t2.start();
m1.mySleep();
m2.mySleep();
}
public void mySleep() {
try {
Thread.sleep(5000);
System.out.println("Sleep / Run");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("Run");
}
}
复制代码
输出:
Run
Run
Sleep / Run
Sleep / Run
第一个Sleep / Run等待了5秒,第二个Sleep / Run在第一个出现后,又等了5秒。
我想问的是,有没有方法可以使得两个线程同时休眠。而不是第一个线程休眠,休眠完之后,在休眠第二个。
作者:
沈浩
时间:
2013-4-16 17:11
本帖最后由 沈浩 于 2013-4-16 17:17 编辑
第一个Sleep / Run等待了5秒,第二个Sleep / Run在第一个出现后,又等了5秒。
我想问的是,有没有方法可以使得两个线程同时休眠。而不是第一个线程休眠,休眠完之后,在休眠第二个。
回答:
因为 打印出两次Sleep / Run都是一个线程执行的 就是主线程 所以是第一个Sleep / Run等待了5秒,第二个Sleep / Run在第一个出现后,又等了5秒。
创建的两个线程t1,t2执行的都是run
而你说的使得两个线程同时休眠(不能同时执行去休眠但是状态可以是同时都在休眠)t1,t2在run方法不同步的情况下在run中加一句Thread.sleep(5000);就可以
例如
public void run() {
// TODO Auto-generated method stub
Thread.sleep(5000);
System.out.println("Run");
}
作者:
偏執旳、靑春
时间:
2013-4-16 21:31
楼主是想让后面那两个方法也实现多线程吧 !我改了一下你的代码,你在试一试。
我测试是同时出来的
package test;
public class MyClass implements Runnable{
public static void main(String[] args) {
MyClass m1 = new MyClass();
Thread t1 = new Thread(m1);
t1.start();
MyClass m2 = new MyClass();
Thread t2 = new Thread(m2);
t2.start();
// m1.mySleep();
//m2.mySleep();
}
public void mySleep() {
try {
Thread.sleep(5000);
System.out.println("Sleep / Run");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("Run");
mySleep();
}
}
作者:
黄玉昆
时间:
2013-4-17 09:01
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2