多线程的常用方法

多线程的常用方法

话不多说,上代码(详细说明在代码里)

package com.xiancheng.bean;

/*
* 线程类的常用相关方法
* 1、start(); 启动当前的线程,调用当前线程的run();
* 2、run();   通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明再此方法中
* 3、currentThread(); 静态方法,返回执行当前代码的线程
* 4、getName(); 获取当前线程的名字
* 5、setName(); 设置当前线程的名字
* 6、yield(); 释放当前cpu的执行权
* 7、join(); 在线程a中调用线程b的join()方法,此时线程a就会进入阻塞状态,直到线程b完全
*            执行以后,线程a才能结束阻塞状态
* 8、stop(); 已过时,当执行此方法时,强制结束当前的线程
* 9、sleep(long milltime); 让当前线程 “睡眠” 指定的milltime(毫秒),即在指定的milltime时间内
*                          当前线程是阻塞状态
* 10、isAlive(); 判断当前线程是否存活
* */
public class MultithreadingThree {
    public static void main(String[] args) {
        Thread1 t1  =new Thread1();
//      5、setName(); 设置当前线程的名字(要在调用start()方法之前设置)
        t1.setName("线程一");
//      1、start(); 启动当前的线程,调用当前线程的run();
        t1.start();
                for(int i=1;i<=100;i++){
                    if(i%2==0){
//                        9、sleep(long milltime); 让当前线程 “睡眠” 指定的milltime(毫秒),即在指定的milltime时间内
//                                                 当前线程是阻塞状态
//                          注意:这个方法本身会抛出一个异常,可以看源码发现(Ctrl+鼠标左键)
                        try{
                            Thread.sleep(50);
                        }catch(InterruptedException e){
                            e.printStackTrace();
                        }

                        System.out.println(Thread.currentThread().getName()+":"+i);
                    }
//                  6、yield(); 释放当前cpu的执行权
                    if(i%10==0){
                        Thread.yield();
//                7、join(); 在线程a中调用线程b的join()方法,此时线程a就会进入阻塞状态,直到线程b完全
//                           执行以后,线程a才能结束阻塞状态
//                      此处是在main线程中调用线程一的join()方法,所以main会阻塞
//                      注意:这个方法本身会抛出一个异常,可以看源码发现(Ctrl+鼠标左键)
                        try{
                            t1.join();
                        }catch(InterruptedException e){
                            e.printStackTrace();
                        }
                    }
                }
//          10、isAlive(); 判断当前线程是否存活
//          因为上面有join()方法,所以执行完之后,线程一就不再存活 输出 false
            System.out.println(t1.isAlive());
            }
        }
class Thread1 extends Thread{
//  2、run(); 通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明再此方法中
    public void run(){
        for(int i=1;i<=100;i++){
            if(i%2==0){
//                     静态方法,返回执行当前代码的线程
//                       例:在[Thread-1,5,main]中
//                            Thread-1代表线程名称
//                            5代表线程优先级(默认为5)
//                            main代表线程所属线程组
//                           (例如在主函数main()主工作流程中产生一个线程,则产生的线程属于main这个线程组管理的一员。)
                System.out.println(Thread.currentThread().getName()+":::"+i);
                //            8、stop(); 已过时,当执行此方法时,强制结束当前的线程
//                stop();        (这个方法自己打开测试体会,在这里就暂且注释掉)
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值