美文网首页
2020-03-19-Java

2020-03-19-Java

作者: hhp895 | 来源:发表于2020-03-19 16:17 被阅读0次

    1.Thread——设置线程名称、获取线程名称。

    当分析线程运行情况时,如何区分不同的线程?通过线程名称来区分不同线程。如果不设置线程名称,系统会分配一个默认的线程名称。
    api:
    void setName(String):表示给当前线程设置一个名称;
    String getName():表示获取当前线程的名称。
    【案例】


    image.png

    项目结构:


    image.png

    MyThread.java


    image.png
    MyTest.java
    image.png

    描述了:一个main线程,发起了2个子线程。

    2.线程的生命周期

    是指线程从开启到结束的整个过程。
    5种状态:
    (1)新建:创建一个线程对象实例。new Thread();
    (2)就绪:准备运行,已经获得资源,但没有获得执行权;start()之后,运行之前。如果操作资源有限制,会立即转入“运行”
    (3)运行:获得了cpu的执行权,进行了运行状态,代码正在执行。当我们看到一条条日志输出到控制台时,就是一个运行态。
    (4)阻塞:运行后被挂起,或者占有cpu资源太多,出让cpu使用权。运行过程中,有更高级别任务需要使用cpu,这时出让cpu执行权。例如:执行程序过程中,需要用户通过键盘输入某某信息,程序才能继续往下执行,当前程序的线程就是阻塞状态。
    (5)死亡:代码执行完毕,线程结束。
    api:
    public static void sleep(long millis)
    public final void join()让某线程切入到当前线程
    public static void yield(),线程让渡
    public final void setDaemon(boolean on)设置是否后台线程;
    public final void stop()中断线程执行,被淘汰
    public void interrupt()中断,推荐使用这个。
    【案例】执行t.stop


    image.png

    【案例】删除t.stop


    image.png
    参考代码:
    image.png
    image.png
    日志:
    调用t.stop():
    image.png
    不调用t.stop():
    image.png

    【作业】
    主线程中有一个循环,每次循环输出一条日志,表示当前线程名称+当前时间(System.currentTimeMillis())。共循环10次。当第5次循环时,线程沉睡5秒。
    在主线程中一开始就创建一个子线程,子线程也是执行一个10次循环,每次输出一条日志,表示当前线程名称+当前时间(System.currentTimeMillis())。当第3次循环时,线程沉睡3秒。
    要求:
    (1)截图出主线程日志中第5次输出和第6次输出日志时间,在图上标出时间差;
    (2)截图出子线程日志中第3次输出和第4次输出日志时间,在图上标出时间差;

    相关文章

      网友评论

          本文标题:2020-03-19-Java

          本文链接:https://www.haomeiwen.com/subject/horlyhtx.html