java线程上路

来源:互联网 发布:这个驸马有淘宝gl下载 编辑:程序博客网 时间:2024/05/17 08:07

这里写图片描述
初始状态:就是刚刚new一个Runnable或者Thread的子类

可运行: 调用start()方法。调用start()方法并不会立即运行,而是得到cpu时间片后才运行

终止:run()方法运行结束

线程阻塞的几种方式

第一种方式阻塞IO,比如读取用户在控制台输入的一行数据

Scanner sc=new Scanner(System.in);    sc.nextLine();

第二种:调用线程的wait(),这个方法会阻塞线程,并且释放线程持有的锁。这是object类的方法
第三种:调用线程对象的join(),它会等待该线程对象出现终止状态,也就是run()方法运行结束。内部的实现是使用wait()

 public final synchronized void join(long millis)    throws InterruptedException {        long base = System.currentTimeMillis();        long now = 0;        if (millis < 0) {            throw new IllegalArgumentException("timeout value is negative");        }        if (millis == 0) {            while (isAlive()) {                wait(0);            }        } else {            while (isAlive()) {                long delay = millis - now;                if (delay <= 0) {                    break;                }                wait(delay);                now = System.currentTimeMillis() - base;            }        }    }

第四种方式:调用Thread类的静态方法sleep(m),该线程会睡m毫秒,也就是 阻塞m 毫秒,m毫秒后进入可运行状态。但是线程不会释放锁。

0 0
原创粉丝点击