• 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 }
  • 相关阅读:
    洛谷 P1077 摆花
    洛谷 P2323 [HNOI2006]公路修建问题
    2017.10.17 模拟赛
    【渗透测试小白系列】之BurpSuite爆破High级别的DVWA(含CSRF-Token防爆破程序)
    【漏洞复现】之sudo提权漏洞(CVE-2019-14287)复现
    【漏洞复现】Maccms潜藏后门分析复现
    杂乱的计算机网络基础
    简述数据库管理
    【漏洞复现】之微信DLL劫持反弹shell复现
    【渗透测试小白系列】之简单使用Ettercap实现DNS劫持
  • 原文地址:https://www.cnblogs.com/zui-ai-java/p/14377374.html
Copyright © 2020-2023  润新知