并发性和多线程(1)
来源:互联网 发布:java 日志输出级别 编辑:程序博客网 时间:2024/06/03 21:25
同步块
同步关键字synchronized
java中的同步代码块用synchronized标记,同步在某个对象上。对象上的同步块只能被一个线程进入并进行操作,其它线程等待,进入阻塞状态。直到进入同步块的线程退出。java中有四种不同的同步块:
1. 实例方法;
2. 静态方法;
3. 实例方法中的同步块;
4. 静态方法中的同步块。
实例方法同步
public synchronized void add(int value){ this.count+=value;}
在方法中声明关键字synchronized,表示该方法是同步的。实例方法同步是同步在拥有该方法的对象上的,因此每个实例其方法同步其实都同步在了不同的对象上。每个实例对象持有一个线程,如果有多个实例,那么就应该对应有多个线程。
静态方法同步
public static synchronized void add(int value){ this.count+=value;}
该方法同步在方法所属的类对象上,而在JVM中,一个类只能对应一个类对象,所以同步时只允许一个线程执行一个类的静态同步方法。
实例方法中的同步块
有时是不需要对整个方法进行同步,而只需要同步其中的某一部分。
在非同步的方法中的同步块:
public void add(int value){ synchronized(this){ this.count+=value; }}
在同步构造器中用()包含起来的叫做监视器对象。本例中,同步实例方法使用调用该方法的实例本身(this)作为监视器对象。一次只能有一个线程在同步于同一个监视器对象的 Java 方法内执行。
静态方法中的同步块
public Class MyClass{ public static void plus(int value){ this.count+=value; } public static void add(int value){ synchronized(MyClass.class){ this.count+=value; } } }}
这两个静态方法是不能同时执行的。
除非方法2中的同步对象不是MyClass。
阅读全文
1 0
- 并发性和多线程(1)
- Java并发系列-1、Java并发性和多线程介绍
- Java 并发和多线程向导(1)
- Java并发性和多线程
- UI多线程(1)并行和并发的…
- Java并发性和多线程介绍
- 【转载】Java并发性和多线程介绍
- Java并发性和多线程介绍目录
- Java并发性和多线程介绍目录
- Java并发性和多线程介绍
- Java并发性和多线程介绍【翻译】
- Java并发性和多线程介绍目录
- Java并发性和多线程介绍目录
- java多线程和并发性介绍
- 读《Java并发性和多线程》有感
- Java并发性和多线程介绍目录
- Java并发性和多线程介绍目录
- Java并发性和多线程介绍目录
- 搭建完全分布式redis集群
- 浅谈QNX进程间通信(IPC)
- slf4j + log4j使用
- docker搭建oracle开发环境
- Ubuntu安装thrift0.10.0
- 并发性和多线程(1)
- Spring Boot 之 HelloWorld详解
- 东芝z20t笔记本如何u盘启动安装系统
- HTTP协议(中):请求报文和响应报文
- tp3.2.3分页类添加记录数
- html5的陀螺仪
- Android多线程同步总结
- 链表反转
- 23 《武士道》 -豆瓣评分7.8