java里sleep包名_怎么在java main方法里用一个线程的sleep()方法让一个循环执行一次后阻塞一秒再循环下一次...

匿名用户

1级

2015-07-20 回答

package com.tarena.fly;

public class asdfsd {

public static void main(String[] args) {

final Thread t1 = new Thread(){

public void run(){

int i = 0;

while(i<10){

System.out.println("t1:"+i++);

try {

Thread.sleep(500);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

};

final Thread t2 = new Thread(){

public void run(){

int i = 0;

try {

t1.join();

} catch (InterruptedException e1) {

e1.printStackTrace();

}

while(i<10){

System.out.println("t2:"+i++);

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

};

Thread t3 = new Thread(){

public void run(){

int i = 0;

try {

t1.join();

t2.join();

} catch (InterruptedException e1) {

e1.printStackTrace();

}

while(i<10){

System.out.println("t3:"+i++);

try {

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

};

Thread t4 = new Thread(){

public void run(){

int i = 0;

try {

t1.join();

t2.join();

} catch (InterruptedException e1) {

e1.printStackTrace();

}

while(i<10){

System.out.println("t4:"+i++);

try {

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

};

t1.start();

t2.start();

t3.start();

t4.start();

}

}

t3,t4都格式都一样,我就不排了。

join方法,等待其他线程结束之后再执行,你在T2里加上t1.join,就是等待t1执行完,在执行自己的run方法,然后再其他线程里加上t1.join;t2.join 就OK了;

亲测,给分!

追问:

亲,有点麻烦,麻烦优化行么

追答:

是哪里麻烦了...

你直接粘到java里,把包名类名改一下,运行就知道了。

运行结果:

t1:0

t1:1

t1:2

t1:3

t1:4

t1:5

t1:6

t1:7

t1:8

t1:9

t2:0

t2:1

t2:2

t2:3

t2:4

t2:5

t2:6

t2:7

t2:8

t2:9

t4:0

t3:0

t4:1

t3:1

t4:2

t3:2

t4:3

t3:3

t4:4

t3:4

t4:5

t3:5

t4:6

t3:6

t4:7

t3:7

t4:8

t3:8

t4:9

t3:9

这些线程都是异步运行的,所以一开始都会运行的,没有顺序

但是当,t2,t3,t4运行到t1.join的时候,线程就会产生阻塞,让t1运行,直到t1运行结束。

t2也是一样。

具体的join方法你可以看达内TTS多线程这一块的讲解。

http://pdf7.tarena.com.cn/tts8_source/ttsPage/JAVA/JSD_V04/JAVASE02/DAY04/SUPERDOC/01/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值