zoukankan      html  css  js  c++  java
  • 多线程基础(1)

    实现多线程方式:   继承Thread   实现Runnable接口(共享资源)
     
    线程方法:  Thread.sleep()
           线程睡眠是帮助所有线程获得运行机会的最好方法。
           只能控制当前正在运行的线程,使当前线程进入休眠状态,休眠期过后自动苏醒,进入就绪状态,而不是运行状态;因此sleep()方法并不能保证线程结束休眠后立即执行,等待cpu的调度
     
            yield()
           线程让步;调用该方法的线程让出cpu调度权,而后cpu随机调用其他线程包括当前让步的线程。
     
    关键字 synchronized:
        1. 只能同步方法,而不能同步变量和类
        2. 不必同步类中的所有方法,类可以同时拥有同步和非同步方法(synchronized只能标记非抽象的方法,不能标识成员变量)
        3. synchronized关键字修饰的方法同时只能被一个线程所访问,直到锁被释放掉;
        4. 线程睡眠时,任何锁都不会被释放掉
        5. 线程可以获得多个锁;在一个对象的同步方法里面调用另外一个对象的同步方法,则获取了两个对象的同步锁。
        6. 同步损害并发性,应该尽可能缩小同步范围。
        7. 在使用同步代码块时候,应该指定在哪个对象上同步,也就是说要获取哪个对象的锁

     如果需要同步静态方法则需要整个类的对象锁       

    public static synchronized int setName(String name){
          Xxx.name = name;
    }
    
    等价于
    public static int setName(String name){
          synchronized(Xxx.class){
                Xxx.name = name;
          }
    }
        
  • 相关阅读:
    requestAnimationFrame
    react 面试题
    useState使用和原理
    常用网址记录
    .net 学习官网
    centos nginx 设置开启启动
    Asp.Net Core 发布和部署 Linux + Nginx
    SQL Server 执行计划缓存
    SQL Server之索引解析(二)
    SQL Server之索引解析(一)
  • 原文地址:https://www.cnblogs.com/ph123/p/5688074.html
Copyright © 2011-2022 走看看