C#之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 } ) }
人各有命,上天注定,有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。