学习使用线程强制运行、学会线程中断

87 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1.实例化一下线程 t1 置此线程名为你的姓名 此线程循环输入 20 行内容,每次中间休眠 50ms,然后启动 然后在主线程中 先输出主线程的线程名 然后强制让线程 t1 先执行完

实现代码:

 package com.zhangyufan.thread;
 ​
 import java.util.Scanner;
 ​
 public class TestThreadJoin {
 ​
     public static void main(String[] args) throws InterruptedException {
         ThreadJoin mythread = new ThreadJoin();
         Thread t1 = new Thread(mythread, "自己的姓名");
         t1.start();
         System.out.println(Thread.currentThread().getName());
         t1.join();
     }
 }
 ​
 class ThreadJoin implements Runnable {
 ​
     @Override
     public void run() {
         String s;
         Scanner sc = new Scanner(System.in);
         for (int i = 0; i < 20; i++) {
             s = sc.nextLine();
             try {
                 Thread.sleep(50);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
         }
 ​
     }
 ​
 }

运行结果:

在这里插入图片描述

  1. 实例化一下线程 t2 置此线程名为你的姓名 此线程循环输出线程名及序号,每次中间休眠 500ms,启动死循环 然后在主线程中 主线程休眠 1 秒 中断线程 t2

实现代码:

 package com.zhangyufan.thread;
 ​
 public class TestThreadInterrupt {
 ​
     public static void main(String[] args) throws InterruptedException {
         ThreadInterrupt mythread = new ThreadInterrupt();
         Thread t2 = new Thread(mythread, "自己的姓名");
         t2.start();
         Thread.sleep(1000);
         t2.interrupt();
     }
 ​
 }
 ​
 class ThreadInterrupt implements Runnable {
 ​
     @Override
     public void run() {
         int i = 0;
         while (true) {
             System.out.println(Thread.currentThread().getName() + " 序号:" + i++);
             try {
                 Thread.sleep(500);
             } catch (InterruptedException e) {
                 System.out.println("休眠被终止");
                 return;
             }
 ​
         }
     }
 ​
 }
 ​

运行结果:

在这里插入图片描述