多线程(二)

线程启动

start:

start方法内部,会调用到系统api,来在系统中创建出线程。

run方法,只是单纯的描述了该线程要执行的内容。(会在start创建好县城之后自动被调用)

终止线程

让一个线程停止运行(销毁),让run方法尽快执行结束

在代码中手动创建出标志位,来作为run执行结束的条件

public class Demo8 {
private static boolean isQuit=false;

public static void main(String[] args) throws InterruptedException {
    Thread t = new Thread( ()->{
        while (!isQuit){
            System.out.println("线程工作中");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("线程工作完成");
    });
 t.start();
 Thread.sleep(5000);

isQuit=true;
System.out.println("设置isQuit为true");
}
}

 1.需要手动创建变量

 2.当线程内部在sleep的时候,主线程修改变量,新线程内部不能及时响应。

package thread;
//线程终止
public class Demo9 {
 public static void main(String[] args) throws InterruptedException {
     Thread t = new Thread(()->{
         //Thread类内部,有一个现成的标志位,可以用来判定当前循环是否要结束
         while(!Thread.currentThread().isInterrupted()){
             System.out.println("线程工作中");
             try {
                 Thread.sleep(1000);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
         }
     });
     t.start();

     Thread.sleep(5000);
     System.out.println("让t线程终止");
     t.interrupt();

 }
}

 

 

 

 

package thread;
//线程终止
public class Demo9 {
 public static void main(String[] args) throws InterruptedException {
     Thread t = new Thread(()->{
         //Thread类内部,有一个现成的标志位,可以用来判定当前循环是否要结束
         while(!Thread.currentThread().isInterrupted()){
             System.out.println("线程工作中");
             try {
                 Thread.sleep(1000);
             } catch (InterruptedException e) {
                 //1.假装没听见,循环继续正常执行
                 e.printStackTrace();
                 //2.加上一个break,表示让线程立即结束
                 //break;
                 //3.做一些工作,完成之后再结束
                  //其他工作代码
                 break;

             }
         }
     });
     t.start();

     Thread.sleep(5000);
     System.out.println("让t线程终止");
     t.interrupt();

 }
}

 

线程等待

让一个线程等待另一个线程执行结束,再继续执行。(控制线程结束的顺序)

join实现线程等待

主线程中调用t.join(),此时是主线程等待t线程先结束

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值