楼主你好,这个你的想法很清晰,不过没有体现在代码上。很明显,在你的程序中,两个线程完全没有分别,都是先打印“正在运行。。。”,然后停了5s。
要实现你的想法我知道的有两种方法,一个是启动了线程一之后,主线程停止5s再启动线程二;另一个是创建两个不同的类对象,实现的run方法一个是直接打印“正在运行。。”,另一个是先停止5s再打印。由于第二种方法很麻烦也不实用,我只修改了第一种方法的代码。希望对你有所帮助。
public class b implements Runnable {
Demo1 demo1 = new Demo1();
@Override
public void run() {
demo1.method();
}
public static void main(String args[]) {
Thread t1 = new Thread(new b());
Thread t2 = new Thread(new b());
t1.start();
try //线程0启动之后,主线程停5s再启动线程1
{
Thread.sleep(5000);
}
catch (Exception e)
{
// TODO Auto-generated catch block
System.out.println(e.toString());
}
t2.start();
}
}
class Demo1 {
public void method() {
System.out.println(Thread.currentThread().getName() + "正在运行。。。");
}
}
已测试。作者: 黄嵘才 时间: 2013-1-15 16:59
把这两个修改一下:
Thread t1 = new Thread(new b());
Thread t2 = new Thread(new b());
//修改
b b = new b();
Thread t1 = new Thread(b);
Thread t2 = new Thread(b);
结论应是你锁的对象其实不同一个。作者: yong230 时间: 2013-1-15 17:01
这样写就行了:
public class b implements Runnable {
Demo1 demo1 = null;
public b(Demo1 demo1){
this.demo1=demo1;
}
@Override
public void run() {