2016/9/25编写java实验报告时对synchronized(同步代码块)的一些感悟

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016/9/25编写java实验报告时对synchronized(同步代码块)的一些感悟相关的知识,希望对你有一定的参考价值。

通过此次实验,明白了多线程的设置和启动、synchronized代码块的用法、线程的优先级使用方法、知道了那几类资源是线程共享的。

我现在理解的多线程是:实例化一个继承了Thread类或实现了Runnable接口的类(继承是为了使其拥有参与多线程的资格);然后再将该类run()中的代码交由Thread类来执行,以此实现多线程的同步运行

 

经过翻阅网络博客,和代码尝试,进一步的认识了同步代码块:

①synchronized(){}代码块在执行时先判断括号里的对象有没有被上锁:

若无,则上锁并开始执行代码块中的代码

若有,则进入阻塞队列,等待唤醒

②synchronized修饰一个非static函数时,被锁住的对象为 this 即当前引用此函数的对象。

③synchronized修饰一个static函数时,由于static/静态 方法是属于类的,所以被锁住的是当前类,当该静态函数被访问时,所有欲访问该函数的线程都将进入阻塞队列

④synchronized据说可以修饰一个类,

class ClassName {
   public void method() {
      synchronized(ClassName.class) {
         // todo
      }
   }
}

 

但经过实验好像并不能进行互斥访问,应该和泛型有关,应该在近期了解一下泛型部分

 

 

参考来自:http://blog.csdn.net/luoweifu/article/details/46613015

以上是关于2016/9/25编写java实验报告时对synchronized(同步代码块)的一些感悟的主要内容,如果未能解决你的问题,请参考以下文章

实验报告一

20145207《Java程序设计》实验五(Java开发环境的熟悉)实验报告

第三周课程总结&实验报告一

20165337第五周实验报告

# 20192315 2020-2021-1 《数据结构与面向对象程序设计》实验四报告

本周学习总结和实验报告一