Java中的多线程与并发之方法扩展[88]
一、join与sleep和中断线程
1.join:执行完毕或等待调用者线程死亡.
2.sleep:将此线程休眠,参数为毫秒值;如果线程被中断则抛出异常,并清除中断状态标记;
3.中断线程:
3.1:interrupt():中断这个线程,单独使用会抛出异常并中断一次,中断标记被清除,过后继续执行;
3.2:interrupted():测试当前线程是否中断,获取中断标记
二、代码演示
public static void main(String[] args) {
Thread t1=new Thread(new MyRunnable());
//t1.start();
Thread t2=new Thread(new TwoRunnable());
t2.start();
for (int i = 0; i < 50; i++) {
if (Thread.interrupted()){//测试当前线程是否中断,获取中断标记
break;
}
System.out.println(Thread.currentThread().getName()+"=="+i);
try {
Thread.sleep(200);
if (i==25){
t2.join();
}
if (i==20){
Thread.currentThread().interrupt();//中断这个线程,单独使用会抛出异常并中断一次,中断标记被清除,过后继续执行
}
} catch (InterruptedException e) {
e.printStackTrace();
Thread.currentThread().interrupt();//重新打上中断标记
}
}
}
class TwoRunnable implements Runnable{
@Override
public void run() {
for (int i = 0; i < 50; i++) {
System.out.println(Thread.currentThread().getName()+"->"+i);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class MyRunnable implements Runnable{
@Override
public void run() {
for (int i = 0; i < 50; i++) {
System.out.println(Thread.currentThread().getName()+"->"+i);
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
三.小结
本章概述了java中多线程与并发的方法扩展,增强线程与线程之间的可用性与扩展性;
有哪里不足或者有更好的建议,欢迎留言吐槽,有哪里不懂的小伙伴,可以私信我,我会一一答复,感谢认可,感谢支持!