• java多线程编程(二)


    1. wait 和 sleep 区别?

      1.wait可以指定时间也可以不指定,sleep必须指定时间。

      2.在同步中时,对cpu的执行权和锁的处理不同。
         wait:释放执行权,释放锁。
         sleep:释放执行权,不释放锁。

    2. 多线程中的锁的概念

        可以这么形象的去理解锁的概念:代码块就相当于"一扇门",如果一个人(线程)进去了这扇门(代码块),并将门锁上了,那么此时其他人就进不去了,除非这个人在里  面做完了一些事情(执行完代码块逻辑)之后将锁打开,其他人才有机会去开门-->上锁-->办事-->解锁.

        最形象的例子就是 “火车上的卫生间”,哈哈

        锁(synchronized)有两种使用方式:

        方式一:同步代码块

      synchronized(this)
      {
        if(num>0)
        {
          try{Thread.sleep(10);}//睡着了,但不释放锁,其他线程还是进不来

          catch (InterruptedException e){}
          System.out.println(Thread.currentThread().getName()+".....obj...."+num--);
        }
      }

      方式二:同步函数

      public synchronized void show()
      {
        if(num>0)
        {
          try{Thread.sleep(10);}catch (InterruptedException e){}
          System.out.println(Thread.currentThread().getName()+".....function...."+num--);
        }
      }

  • 相关阅读:
    Java 学习 第二篇;面向对象 定义类的简单语法:
    Java 学习 第一篇
    Compiler Principles 语法分析
    未来智能机的发展趋势
    C语言IO操作总结
    python学习资料
    JavaScript 数组的创建
    JavaScript中的逗号运算符
    JavaScript本地对象 内置对象 宿主对象
    JavaScript的this用法
  • 原文地址:https://www.cnblogs.com/byron0918/p/4672000.html
Copyright © 2020-2023  润新知