zoukankan      html  css  js  c++  java
  • 线程之间协作

    一、wait、notife、notifyAll

    1、

     2、

    notify就发一个信号,随机给正在wait的线程中一个,不传递;

    notifyAll发送给所有正在wait的线程信号;

    条件允许,使用notifyAll,线程类中重写的run方法做好逻辑判断,使得创建出来的线程不会产生冲突就行;

     3、实现代码

    线程类:

    3.1通知方

     3.2等待方

    3.3 主线程代码:

     

     Thread.sleep() 是Thread的静态方法,使当前线程睡眠,被interrupt中断会报interruptException;

     二、等待超时模式

    等待超时后,不能让程序一直等待下去;

    1、等待超时模式的数据库连接池线程类:

      等待方和通知方:

     2、主线程类和计数器

    创建1000个线程,看下连接成功多少,连接超时多少;

    三、join

    线程插队,谁插队谁先执行,当前线程被插队之后等待插队的所有线程执行完之后才能执行,状态没变,还是执行态,并不是就绪状态;

    1、join插队线程类

     2、主线程:

     前面线程插队到后面线程前面,main插在0前面,接着下一步0插在1前面(带着0自己前面的main),下一步1插在2前面(带着1自己前面的0和main)...

    所以最后插队完毕之后,执行顺序也是main 0 1 2 。。。

     四、

     其中,schronized就是锁,内置锁;

    notify本身不释放锁,但是整个方法块执行完后会释放锁:

  • 相关阅读:
    Java 跨系统开发隐患(一)
    SpringBoot邮件推送功能
    基于图灵api的Python机器人
    JSP编码问题解决方法
    记一次数据结构课设
    基于百度语音识别API的Python语音识别小程序
    帝国cms过滤采集内容
    如何批量取消文章审核
    评论时判断会员是否登录
    帝国cms把文章加入到收藏夹代码
  • 原文地址:https://www.cnblogs.com/wmqiang/p/11668345.html
Copyright © 2011-2022 走看看