zoukankan      html  css  js  c++  java
  • 多线程(第二天)

    ---恢复内容开始---

    锁定和监视

    只要有实例就会相对有一个锁定。因此不是说因为某个实例的synchronized方法正在执行中,导致无法执行其他的实例的synchronized方法

    线程共享互斥的架构称为监视(monitor),而获取锁定有时也称为“持有监视”(own)

    synchronized阻挡

    只想启动方法里一部分的线程,而非启动整个方法时 则可以启动synchronized阻挡

    synchronized(){

    ....

    }

    则可以把获取锁定的实例传给“表达式”这部分。如果更精密控制共享互斥的范围,则需要使用synchronized阻挡

    synchronized方法和synchronized阻挡

    synchronized void method(){

    、、、

    }

    在功能上,它跟下面这个synchronized阻挡为主的方法有异曲同工之妙

    void method(){

    synchronized(this){

    ..

    }

    }

    换句话说,synchronized实例方法是使用this锁定去做线程的共享互斥

    synchronized类方法和synchronized阻挡

    假设现在有一个synchronized类方法,synchronized有限制同时只能让一个线程执行这个部分跟synchronized实例方法一样。但是利用synchronized类方法的锁定跟利用synchronized实例方法并不相同

    class something{

    static synchronized void methods(){

      。。。。

    }

    }

    在功能上它跟下面方法有异曲同工之妙

    class something{

    static void method(){

    synchronized(something.class)

    }

    }

    换句话说,synchronized类方法是使用该类的类对象的锁定去做线程的共享互斥。something.class是对应something类的java.lang.Class类的实例

    synchronized语句

    Java规格 The Java Language Specification则是把synchronized阻挡叫synchronized语句 (synchronized statement)

    线程的协调

    简单型的共享互斥:当有一个线程正在执行synchronized方法时,其他线程无法执行该方法。

    等候:若该空间有空闲则写入数据,若非空闲则等候直到空出为止

    通知:当该空间已空出,则通知正在等候的线程

    wait 让线程乖乖等候notify  notifyAll  启动等候中线程的方法

    wait set   线程的休息室

    所有实例都有一个wait set   是一个在执行该实例的wait方法时,操作停止的线程的集合

    执行wait方法时 线程便会暂时停止操作 进入wait set 除非

    1.有其他线程以notify方法唤醒该线程

    2.有其他线程以notifyAll唤醒该线程

    3.有其他线程以interrupt方法唤醒该线程

    4.wait方法已经到期

    obj.wait();

    则目前的线程会暂时停止执行,进入 obj的wait set   这个操作称为:线程在obj的wait 

    如果实例方法里还有如下的语句  wait();则其意义同 this.wait();

    故执行wait()的线程就会进入this的wait set 此时 就变成了线程在this上的wait

    如欲执行wait()方法,线程需获取锁定(这是规则),但是当线程进入wait set时 ,已经释放了该实例的锁定。

    wait set

    一个虚拟的概念 它既不是实例的字段 也不是可以获取在实力上wait中线程列表的方法

  • 相关阅读:
    4、numpy——创建数组
    3、NumPy 数组属性
    2、NumPy 数据类型
    windos常见命令操作
    PHP操作MongoDB学习笔记
    MongoDB(八)Mongodb——GridFS存储
    MongoDB(七)MongoDb数据结构
    MongoDB(五)mongo语法和mysql语法对比学习
    MongoDB可视化工具RoboMongo----Windows安装 1
    MongoDB(四)mongodb设置用户访问权限
  • 原文地址:https://www.cnblogs.com/sunshine-in/p/4074308.html
Copyright © 2011-2022 走看看