zoukankan      html  css  js  c++  java
  • 线程较为深的度剖析1

    为了探索同步的特性做了些实验:

    package com.wjy.synchronize;
    
    public class MyThread implements Runnable{
        @Override
        public void run() {
            // TODO Auto-generated method stub
            synchronized (this) {
                for(int i=0;i<10;i++){
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName()+"   loop   "+i);
                }
            }
            
        }
        
    }

    我们知道将synchronized的标识移动到函数声明的地方也是一样的效果,即public synchronized void run(){....。

    但是:有没有想过将synchronized(this)中的this换成MyThread.class呢?就是synchronized(MyThread.class) 。

    实验结果:看起来是一样的,其实不然。

    测试代码:

    package com.wjy.test;
    
    import com.wjy.synchronize.MyThread;
    
    public class MainTestSyn {
        public static void main(String args[]){
            final MyThread myThread=new MyThread();
    
            Thread thread1=new Thread(myThread, "buDog");
            Thread thread2=new Thread(myThread, "paoDog");      
    thread1.start(); thread2.start(); } }

    但是若是将测试代码修改为:

    package com.wjy.test;
    
    import com.wjy.synchronize.MyThread;
    
    public class MainTestSyn {
        public static void main(String args[]){
            final MyThread myThread=new MyThread();
    
         final MyThread addThread=new MyThread();
    
    
            Thread thread1=new Thread(myThread, "buDog");
            Thread thread2=new Thread(addThread, "paoDog");      
      
            thread1.start();
            thread2.start();
        }
    }

    就会发现this和MyThread.class的不同。因为若采用以上测试代码的话,this是达不到同步效果的。所以MyThread.class的意思是对所有的MyThread的对象同步。而this仅仅是对当前对象同步。

  • 相关阅读:
    fastText文本分类算法
    迁移学习综述
    Doc2vec实现原理
    skip-thought vector 实现Sentence2vector
    IRT模型的参数估计方法(EM算法和MCMC算法)
    解决不能再jupyter notebook中使用tensorflow
    TensorFlow——循环神经网络基本结构
    React项目使用React-Router
    初始化一个React项目(TypeScript环境)
    TypeScript TSLint(TypeScript代码检查工具)
  • 原文地址:https://www.cnblogs.com/wangjiyuan/p/tongbu3.html
Copyright © 2011-2022 走看看