zoukankan      html  css  js  c++  java
  • 线程

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

      创建线程:

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

      

  • 相关阅读:
    linux端口开放指定端口的两种方法
    关于JqueryCheck选中获取数据
    ASP.NET MVC 简单分页代码
    ASP.NET MVC4分页Site.CSS
    SQL索引的优缺点
    SQL字段数据类型小技巧
    数据库强制完整性的机制
    WinFrom饼形图
    WinFrom折线图
    WinFrom柱形图
  • 原文地址:https://www.cnblogs.com/zawjdbb/p/6283411.html
Copyright © 2011-2022 走看看