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(同步代码块)的一些感悟的更多相关文章
- java多线程(三)——锁机制synchronized(同步语句块)
用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法之行一个长时间的任务,那么B线程必须等待比较长的时间,在这样的情况下可以使用synchronized同步语句快来解 ...
- “全栈2019”Java多线程第二十一章:同步代码块产生死锁的例子
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java多线程第十八章:同步代码块双重判断详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- Java基础之线程——管理线程同步代码块(BankOperation4)
控制台程序. 除了同步类对象的方法之外,还可以把程序中的语句或代码块制定为synchronized,这种方式更强大,因为可以指定哪个对象从语句或代码块的同步中获益,而不像同步方法那样仅仅是包含代码的对 ...
- java中的synchronized同步代码块和同步方法的区别
下面这两段代码有什么区别? //下列两个方法有什么区别 public synchronized void method1(){} public void method2(){ synchronized ...
- Android(java)学习笔记68:同步代码块 和 同步方法 的应用
1. 同步代码块 和 同步方法 代码示例: (1)目标类,如下: package cn.himi.text; public class SellTicket implements Runnable { ...
- 线程执行synchronized同步代码块时再次重入该锁过程中抛异常,是否会释放锁
一个线程执行synchronized同步代码时,再次重入该锁过程中,如果抛出异常,会释放锁吗? 如果锁的计数器为1,抛出异常,会直接释放锁: 那如果锁的计数器为2,抛出异常,会直接释放锁吗? 来简单测 ...
- Android(java)学习笔记8:同步代码块 和 同步方法 的应用
1. 同步代码块 和 同步方法 代码示例: (1)目标类,如下: package cn.himi.text; public class SellTicket implements Runnable { ...
- java中多线程模拟(多生产,多消费,Lock实现同步锁,替代synchronized同步代码块)
import java.util.concurrent.locks.*; class DuckMsg{ int size;//烤鸭的大小 String id;//烤鸭的厂家和标号 DuckMsg(){ ...
随机推荐
- FZU-2075 Substring(后缀数组)
Description Given a string, find a substring of it which the original string contains exactly n such ...
- multithreading - Reader/Writer Locks in C++
You Only Need To Note This: only 1 single thread can acquire an upgrade_lock at one time. others are ...
- PCB的过孔
在走多层板时,经常需要打过孔,那么过孔是怎么分类的呢?且往下看. (1)通孔:这种孔穿过整个线路板,可以用于内部互连或者作为元件的安装定位孔(用于连接层:生成钻孔文件,在PCB上打孔并在孔内电镀:通常 ...
- 单元测试 – ASP.NET MVC 4 系列
在开发可测试软件的过程中,单元测试已成为确保软件质量的一个不可或缺部分.测试驱动开发(Test-Driven Development,TDD)是编写单元测试的一种方法,采用该方法的开发人 ...
- nginx入门篇----功能特性
1.nginx功能特性 可以作为http服务器或者反向代理服务器 能够快速响应静态页面(html)的请求 支持FastCGI.SSL.Virtual Host.URL Rewrite.HTTP.Gzi ...
- C#遍历指定文件夹中的所有文件和子文件夹
参考:http://www.cnblogs.com/skylaugh/archive/2012/09/23/2698850.html DirectoryInfo TheFolder=new Direc ...
- NetflixOSS:Hollow正式发布
http://www.infoq.com/cn/articles/netflixoss-hollow-officially-released "如果你能 非常有效地 缓存 一切 ,那么通 ...
- java1234教程系列笔记 S1 Java SE chapter 02 lesson 03 java基本数据类型
第二章 第三节 数据类型 3.1 分类 基本数据类型.引用类型 3.2整型 byte 8 short 16 int 32 long 64 作业: A:1-10求和 B:float double 的最 ...
- jdk环境变量配置
新建用户变量PATH,编辑jdk路径. 仅此而已.
- 营业额统计(SBT)
营业额统计(SBT) #include<cstdio> #include<cstring> #include<string> #include<cstdlib ...