• [总结] 第十四章 线程


    线程

    一个线程是进程内部的分支 。线程是共享一个进程的内存空间。

    Thread 类 (线程)

    1.写一个类继承Thread类,重写run();方法,

    2.new 出这个类

    3.调用这个类的start()方法,开启线程,该方法会为线程分配资源,然后自动调用this,run()方法,如果直接调用run方法不会报错,但只是普通的方法调用而已,并没有开启线程

    第二种方式(如果一个类继承了一个父类):

    runnable 接口,

    1.写一个类实现runnable接口,重写run()方法。

    2.先new 出这个类,在new 出thread 线程。

    3.将线程接口传给thread 线程,再使用thread的start方法。

    造成线程中断的五个状态:

    1.z中断状态:cpu 执行其他线程没有执行本线程时,被执行的几率分为优先级(共10级),使用.setpriorty()方法

    2.阻塞状态:由于输入输出造成的线程中断状态。

    3.休眠状态:主动调用sleep()方法,给他一个毫秒数,在这个时间之后执行。

    4.d等待状态:在object中的wait方法和notify 方法,等待和唤醒一般搭配使用。

    5.挂起状态:强制将一个线程退出,yield()方法。

    线程同步(synchronized)同步锁

    当有时两个或多个线程可能会试图同时访问一个资源,在此情况下,数据可能会变的不一致,为了确保任何一个时间点共享的资源只被一个线程使用,便使用了“同步”,使用同步关键字 synchronized 作为标识。

    t同步的第一种实现:

    同步方法,在资源身上加同步关键字synchronized

    t同步的第二种实现:在调用资源的线程上用synchronized 同步块,

    列:synchronized (this.rs){
      this.rs.show(this.getName)();}

    注意:包装类作引用类型传参时,会产生一个新的包装类对象,其效果与基本类型数据无异。

    扩展:死锁

    当两个线程同步同一资源两个功能,并且两个功能有相互依赖关系时。便成了死锁,这时便需要调用object的wait()和notify()方法。

  • 相关阅读:
    Softmax
    网络流模板大全
    简单数据结构题(from 钟子谦——IOI2018集训队自选题)
    [POJ3177]Redundant Paths
    [BZOJ1051][HAOI2006]受欢迎的牛
    [BZOJ2036]聪明的阿卑多
    [BZOJ1455]罗马游戏
    [POJ2942][LA3523]Knights of the Round Table
    [POJ3352]Road Construction
    练级(train)
  • 原文地址:https://www.cnblogs.com/jrc2016/p/6250162.html
Copyright © 2020-2023  润新知