Thread中的常用方法
1 package day2_3; 2 3 /** 4 * 测试Thread中的常用方法 5 * 1.start() 启动当前线程,调用当前线程的run() 6 * 2.run() 通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中 7 * 3.currentThread() 静态方法,返回执行当前代码的线程 8 * 4.getName() 获取当前线程的名字 9 * 5.setName() 设置当前线程的名字 10 * 6.yield() 释放当前cup的执行权 11 * 7.join() 在线程A中调用线程B的join(),此时线程A就进入阻塞状态,直到线程B完全执行完以后, 12 * 线程A才结束阻塞状态 13 * 8.stop() 已过时,当执行此方法时,强制结束当前线程 14 * 9.sleep(long millitime) 静态方法,让当前线程睡眠指定的millitime毫秒,在指定的millitime毫秒时间内, 15 * 当前线程是阻塞状态 16 * 10.isAlive() 判断当前线程是否存活(线程的run()是否执行完) 17 * 18 * 19 * 程序的优先级 20 * 1. 21 * MAX_PRIORITY = 10 22 * MIN_PRIORITY = 1 23 * NORM_PRIORITY = 5 ---->默认优先级 24 * 2.如何获取和设置当前线程的优先级 25 * getPriority() 26 * setPriority(int p) 27 * 说明:高优先级的线程要抢占低优先级线程cup的执行权。但是只是从概率上讲,高优先级的线程高概率 28 * 的情况下被执行,并不意味着只有当高优先级的线程执行完以后,低优先级线程才执行 29 * 30 * 31 * 32 * 33 * 34 * 35 * @Author Tianhao 36 * @create 2021-02-03-22:14 37 */ 38 39 class HelloThread extends Thread { 40 @Override 41 public void run() { 42 for (int i = 0; i < 100; i++) { 43 if (i % 2 == 0) { 44 System.out.println(getName() + ": " 45 + Thread.currentThread().getPriority() + ": " + i); 46 } 47 48 if (i%20 ==0) { 49 yield(); 50 } 51 } 52 } 53 54 //线程命名方式二:声明带参构造器,并调用父类的带参构造器 55 public HelloThread(String name) { 56 super(name); 57 } 58 59 } 60 61 62 public class ThreadMethodTest { 63 public static void main(String[] args) { 64 //使用带参构造器命名线程 65 HelloThread h1 = new HelloThread("新线程"); 66 //线程命名方式一 67 // thread.setName("线程一"); 68 h1.setPriority(Thread.MAX_PRIORITY); 69 h1.start(); 70 71 //给主线程命名 72 Thread.currentThread().setName("主线程"); 73 74 Thread.currentThread().setPriority(Thread.MIN_PRIORITY); 75 for (int i = 0; i < 100; i++) { 76 if (i % 2 == 0) { 77 // try { 78 // Thread.currentThread().sleep(10); 79 // } catch (InterruptedException e) { 80 // e.printStackTrace(); 81 // } 82 System.out.println(Thread.currentThread().getName() + ": " 83 + Thread.currentThread().getPriority() + ": " + i); 84 } 85 86 // if (i == 20) { 87 // try { 88 // h1.join(); 89 // } catch (InterruptedException e) { 90 // e.printStackTrace(); 91 // } 92 // } 93 94 System.out.println(h1.isAlive()); 95 } 96 } 97 }