学会定义和使用线程

90 阅读1分钟

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

1.定义继承 Thread 的类 改写类的 run 方法,要求每 150 毫秒打印一次线程名 在 main 中 3 次实例化这个类,并调用,同时注意显示的结果

实现代码:

 package com.zhangyufan.thread;
 ​
 public class TestMyThread {
 ​
     public static void main(String[] args) {
 ​
         MyThread mythread1 = new MyThread();
         mythread1.setName("线程1");
         mythread1.start();
         MyThread mythread2 = new MyThread();
         mythread2.setName("线程2");
         mythread2.start();
         MyThread mythread3 = new MyThread();
         mythread3.setName("线程3");
         mythread3.start();
 ​
     }
 ​
 }
 ​
 class MyThread extends Thread {
 ​
     @Override
     public void run() {
         for (int i = 0; i < 10; i++) {
             try {
                 Thread.sleep(150);
                 System.out.println(Thread.currentThread().getName()+"--"+i);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
         }
     }
 ​
 }

运行结果:

在这里插入图片描述 在这里插入图片描述

  1. 定义实现 Runnable 接口的类 此类的 run 方法,要求每 50 毫秒打印一次线程名 在 main 中 3 次实例化这个类,并调用

实现代码:

 package com.zhangyufan.thread;
 ​
 public class TestMyThread2 {
 ​
     public static void main(String[] args) {
 ​
         MyThread2 mythread1 = new MyThread2();
         Thread thread1 = new Thread(mythread1, "线程1");
         thread1.start();
         MyThread2 mythread2 = new MyThread2();
         Thread thread2 = new Thread(mythread2, "线程2");
         thread2.start();
         MyThread2 mythread3 = new MyThread2();
         Thread thread3 = new Thread(mythread3, "线程3");
         thread3.start();
 ​
     }
 ​
 }
 ​
 class MyThread2 implements Runnable {
 ​
     @Override
     public void run() {
         for (int i = 0; i < 10; i++) {
             try {
                 Thread.sleep(50);
                 System.out.println(Thread.currentThread().getName()+"--"+i);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
 ​
         }
 ​
     }
 ​
 }

运行结果:

在这里插入图片描述 在这里插入图片描述 3.在 main 中使用匿名类方式实现 Runnable 接口的类,要求每 120 毫秒打印一次线程名

实现代码:

 package com.zhangyufan.thread;
 ​
 public class TestNoname {
 ​
     public static void main(String[] args) {
         Thread thread = new Thread(new Runnable() {
             @Override
             public void run() {
                 for (int i = 0; i < 10; i++) {
                     try {
                         Thread.sleep(120);
                         System.out.println(Thread.currentThread().getName() + "---" + i);
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                     }
 ​
                 }
 ​
             }
 ​
         }, "匿名线程");
         thread.start();
     }
 ​
 }
 ​

运行结果:

在这里插入图片描述

  1. 然后在执行另一个匿名类,要求每 100 毫秒, 打印一个随机整数

实现代码:

 package com.zhangyufan.thread;
 ​
 import java.util.Random;
 ​
 public class TestNoname2 {
 ​
     public static void main(String[] args) {
 ​
         new Thread(new Runnable() {
             @Override
             public void run() {
                 Random r = new Random();
                 for (int i = 0; i < 10; i++) {
                     try {
                         Thread.sleep(100);
                         System.out.println(Thread.currentThread().getName() + "---第" + (i + 1) + "个随机整数" + r.nextInt());
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                     }
                 }
             }
 ​
         }, "匿名线程").start();
 ​
     }
 ​
 }
 ​

运行结果:

在这里插入图片描述