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开发环境的熟悉)实验报告