zoukankan      html  css  js  c++  java
  • Synchronize 到底锁的是谁

    视频来源

    Synchronize 到底锁的是谁
    
    实现线程同步,让多个线程依次获取某个资源,保证数据不会出错.
    
    Synchronized 到底锁定的是什么元素
    
    1:修饰方法:
            静态方法:锁定的是类
            非静态方法:锁定的是方法的调用者
    2:修饰代码块
            锁定的是传入的对象
    
    public class Data2
    {
        //Synchronized 锁定代码块,使线程同步化
        //如果当前的实例化要运行fun方法,那么加了这个synchronized就会
        //把Data2这个对象"占住"(类似上厕所),其他再进来的线程就要等待前一个线程释放资源
        //这样就以达到线程同步化的效果
         Synchronized(this) //特别指明,这个this 指的是Data2的实例化对象
         {
               public void fun()
               {
                  console.writeline("Start....");
                  Thread.sleep(2000);//沉睡2s
                  console.writeline("Ending....");
               }
       }
    }
    
    new 对象会开辟新的空间,放置在堆里。
    不是new ,但是小于255 java 中的int常量池中有,所以是同一个
    常量池有个范围是-128~127
    如果超过这个值,依旧是会创建一个新的值
    num=1,是在这范围里,直接从常量池中取,
    如果num=255,那么就会New一个新的出来
    for(int i=0;i<5;i++)
    {
        new Thread(()=>
        {
          int num=1;//这里循环5次是同一个num
          //int num=new int(5);//这里是每次都新创建一个num,是5个num
        }
        )
    }
    人各有命,上天注定,有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。
  • 相关阅读:
    向TRichEdit插入图片的单元
    等待程序结束后, 自动启动程序的批处理
    执行程序函数
    基于IWICImage的截图代码
    线程中WICImage与Bitmap数据转换
    清理win10过期补丁的命令
    [转] 常见的哈希函数
    豆瓣小组爬虫.....^_^
    如何在ASP.NET Core中实现CORS跨域
    在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证
  • 原文地址:https://www.cnblogs.com/ZkbFighting/p/15419530.html
Copyright © 2011-2022 走看看