• 线程


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

      创建线程:

        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的线程。

      

  • 相关阅读:
    .NET 去除一段文本中的HTML标记
    C#实现控件拖动窗口
    使用window.showModalDialog弹出窗口返回值(兼容IE、FF、chrome)
    IE浏览器报错出现stack overflow at line 0的解决办法
    用Python作GIS:原料篇
    winform 自定义控件:半透明Loading控件
    WPF 跟随鼠标动画 by wgscd
    C# 多线程 HTTP request
    VS2015 安装XAN
    C# 用QQ企业邮箱发邮件
  • 原文地址:https://www.cnblogs.com/zawjdbb/p/6283411.html
Copyright © 2020-2023  润新知