zoukankan      html  css  js  c++  java
  • Java并发程序基础

    Thread.stop()

    直接终止线程,并且会立即释放这个线程所持有的锁。

    Thread.interrupt()

    并不会是线程立即退出,而是给线程发送一个通知,告知目标线程,有人希望你退出啦,至于目标线程接到通知后会如何处理,则完全由目标线程自行决定。

    Thread.sleep()

    使当前线程休眠若干时间,如果线程sleep时被中断,就会产生InterruptedException

    wait()和notify()方法不属于Thread,而是Object

    T1

    T2

    获取object监视器

    Object.wait()

    释放object监视器

    获得object监视器

    Object.notify()

    等待object监视器

    释放object监视器

    重获object监视器

    继续执行

    Object.wait()和Thread.sleep()都可以让线程仍待若干时间,除了wait()可以被唤醒外,另一个主要区别就是wait()方法会释放目标对象的锁,而sleep()方法不会释放任何资源。

    join()方法的本质是让调用线程wait()在当前线程对象实例上。

    yield()会使当前线程让出CPU,但让出CPU后,还会进行CPU资源的争夺。

    volatile关键字声明一个变量的时候,等于告诉虚拟机,这个变量极有可能被某些程序或者线程修改。为了确保这个变量被修改后,应用程序范围内的所有线程都能够看到这个改动,虚拟机就必须采用一些特殊的手段,保证这个变量的可见性等他点,但是并不能替代锁,也无法保证一些复合操作的原子性。

  • 相关阅读:
    00 vue源码里面常见方法
    vue 组件
    vue 样式
    vue 表单
    网络技术:NAT 网络地址转换
    网络技术:ACL 访问控制列表
    网络技术:VLAN 虚拟局域网
    Java程序设计——购物车系统
    网络 2011-2012 C 语言第三次作业批改总结
    第一用CSS
  • 原文地址:https://www.cnblogs.com/yueyanglou/p/5182301.html
Copyright © 2011-2022 走看看