1. start 启动线程 执行run方法
    2. setName,getName 设置、获取线程名称
    3. currentThreadd() 返回执行当前代码的线程
    4. yieid() 是否当前cpu执行权; 但是还是有可能抢到执行权
    5. sleep() 阻塞当前线程 单位毫秒
    6. join 线程A中使用线程B调用join方法 此时线程A阻塞 等待线程B执行完毕后 线程A继续执行
    7. isAlive 判断当前线程是否还存活 ```java /**

      • 创建人:LYY
      • 创建时间:2022/4/25
      • 线程常用的方法 */ public class ThreadMethod {

        public static void main(String[] args) {

        ThreadOne threadOne1 = new ThreadOne(); try {

        1. // 设置当前线程名称
        2. Thread.currentThread().setName("主线程:");
        3. // 设置线程名称
        4. threadOne1.setName("线程一:");
        5. // 启动线程 执行操作
        6. threadOne1.start();
        7. // 主线程执行
        8. for (int i = 0; i < 100; i++) {
        9. if (i % 2 != 0) {
        10. System.out.println(Thread.currentThread().getName() + "i = " + i);
        11. }
        12. if (i == 23) {
        13. // 释放当前线程cpu的执行权; 但是可能还会抢到执行权
        14. threadOne1.yield();
        15. }
        16. if (i == 29) {
        17. // 判断当前线程是否还存活
        18. boolean alive = threadOne1.isAlive();
        19. // A线程中调用B线程 此时阻塞A线程 直至B线程执行完成后 A线程继续执行
        20. threadOne1.join();
        21. }
        22. }
    1. } catch (InterruptedException e) {
    2. e.printStackTrace();
    3. }
    4. }

    }

    1. ```java
    2. /**
    3. * 创建人:LYY
    4. * 创建时间:2022/4/25
    5. *
    6. * 多线程创建方式一:
    7. * 1. 创建一个继承Thread类的子类
    8. * 2. 重写Thread类的run方法
    9. * 3. 将要执行的内容写在run方法体内
    10. * 4. 通过对象调用当前子类的start方法
    11. */
    12. public class ThreadOne extends Thread{
    13. @Override
    14. public void run() {
    15. // 输出1-100的偶数
    16. for (int i = 0; i < 100; i++) {
    17. if (i % 2 == 0) {
    18. System.out.println(this.getName() + "i = " + i + "**");
    19. }
    20. if (i == 50) {
    21. // 睡眠(阻塞)3秒后执行
    22. try {
    23. sleep(3000);
    24. } catch (InterruptedException e) {
    25. e.printStackTrace();
    26. }
    27. }
    28. }
    29. }
    30. }