java基础-多线程-thread类、runnable接口

愿历尽千帆,归来仍是少年

多线程:thread、runnable废话不多说,直接上demo

 

Java中线程中状态可分为五种:New(新建状态),Runnable(就绪状态),Running(运行状态),Blocked(阻塞状态),Dead(死亡状态)。

 

  • New:新建状态,当线程创建完成时为新建状态,即new Thread(…),还没有调用start方法时,线程处于新建状态。

  • Runnable:就绪状态,当调用线程的的start方法后,线程进入就绪状态,等待CPU资源。处于就绪状态的线程由Java运行时系统的线程调度程序(thread scheduler)来调度。

  • Running:运行状态,就绪状态的线程获取到CPU执行权以后进入运行状态,开始执行run方法。

  • Blocked:阻塞状态,线程没有执行完,由于某种原因(如,I/O操作等)让出CPU执行权,自身进入阻塞状态。

  • Dead:死亡状态,线程执行完成或者执行过程中出现异常,线程就会进入死亡状态。

 

 

 

 

Thread类:

    @ApiOperation(value = "basic线程测试-Thread", notes = "basic线程测试-Thread")
    @GetMapping(value = "/startThread")
    public Response startThread(){
        // Thread类
        // 新状态
        BasicThread t1 = new BasicThread("张三");
        BasicThread t2 = new BasicThread("李四");
        // 可运行状态
        t1.start();
        t2.start();

        return Response.ok();
    }
/**
 * 基础线程测试
 *
 * @author hxx
 * @version 1.0
 * @date 2021/7/9 10:29
 */
public class BasicThread extends Thread {

    public static Logger logger = LogManager.getLogger(BasicThread.class);

    public BasicThread (String param) {
        super(param);
    }

    public void run() {
        logger.info("BasicThread start!!!");
        // 运行态
        for (int i = 0; i < 1000; i++) {
            System.out.println(this.getName() + ":" + i);
        }
        // 死亡态
    }
}

Runnable接口:

    @ApiOperation(value = "basic线程测试-runnable", notes = "basic线程测试-runnable")
    @GetMapping(value = "/startRunnableThread")
    public Response startRunnableThread(){
        // Runnable接口

        BasicRunnable a1 = new BasicRunnable("张三");
        BasicRunnable a2 = new BasicRunnable("李四");
        // 新状态
        Thread t1 = new Thread(a1);
        Thread t2 = new Thread(a2);

        // 可运行状态
        t1.start();
        t2.start();

        return Response.ok();
    }
/**
 * @author hxx
 * @version 1.0
 * @date 2021/7/9 10:48
 */
public class BasicRunnable implements Runnable {

    public static Logger logger = LogManager.getLogger(BasicRunnable.class);

    private String param;

    public BasicRunnable(String param) {
        this.param = param;
    }

    @Override
    public void run() {
        logger.info("BasicRunnable Start!!!");
        // 运行态
        for (int i = 0; i < 1000; i++) {
            System.out.println(param + ":" + i);
        }
        // 死亡态
    }
}

 

posted @ 2021-07-09 11:00  归来仍是少年-youg  阅读(61)  评论(0)    收藏  举报