• 线程


      线程是一个程序内部的顺序控制流。

      创建线程:

        1.定义线程类并实现Runnable接口:(较好,更灵活)

          class Runner implements Runnable{...};

          Runner target = new Runner();

          Thread myThread = new Thread(target); target为runnable接口类型。

          Runnable只有一个run()方法

        2.定义Thread的子类并重写run()方法。

      启动线程:

        start()方法启动线程。

        如果使用run()方法,则是普通的方法调用。

        即start()方法启动线程,子线程和主线程并行运行(轮流执行一部分),run()方法则阻塞运行。

      sleep():让出cpu一定时间。

      join():合并线程,即子线程变成方法调用。

      yield():让出cpu一次。

      线程同步:协调多个线程访问同一份资源。

        使用synchronized(this){...}包含那个资源。

        资源前加synchronized修饰。

      synchronized:锁定。

      线程死锁:

        1锁a,sleep,需要锁b

        2锁b,sleep,需要锁a

        构成死锁。

      解决死锁:

        把锁的粒度加粗,锁定更大对象。

      wait()和sleep()的不同:

        wait()是Object的方法,sleep()是Thread的方法,wait时,别的线程可以访问锁定对象,调用wait方法必须先锁定对象。sleep时,别的线程不可以访问锁定对象。

      notify/notifyAll:

        唤醒wait的线程。

      

  • 相关阅读:
    浅谈线性 Linear
    Github TinyRenderer渲染器课程实践记录
    蓝点无限UWB TDOA 低功耗标签 功耗测试
    UWB DW1000 BP30 测距代码架构
    C语言
    C语言
    张量tensor 和张量分解 tensor decomposition
    Manifold learning流行学习和谱聚类
    机器学习里面的核kernel, 维数灾难
    机器学习评价方法
  • 原文地址:https://www.cnblogs.com/zawjdbb/p/6283411.html
Copyright © 2020-2023  润新知