一、Java并发编程基础篇(003)同步异步
2017-12-06 21:39
295 查看
package com.bjsxt.base.sync003;
/**
* 对象锁的同步和异步问题
* @author alienware
*
*/
public class MyObject {
public synchronized void method1(){
try {
System.out.println(Thread.currentThread().getName());
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
/** synchronized */
public void method2(){
System.out.println(Thread.currentThread().getName());
}
public static void main(String[] args) {
final MyObject mo = new MyObject();
/**
* 分析:
* t1线程先持有object对象的Lock锁,t2线程可以以异步的方式调用对象中的非synchronized修饰的方法
* t1线程先持有object对象的Lock锁,t2线程如果在这个时候调用对象中的同步(synchronized)方法则需等待,也就是同步
*/
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
mo.method1();
}
},"t1");
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
mo.method2();
}
},"t2");
t1.start();
t2.start();
}
}
/**
* 对象锁的同步和异步问题
* @author alienware
*
*/
public class MyObject {
public synchronized void method1(){
try {
System.out.println(Thread.currentThread().getName());
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
/** synchronized */
public void method2(){
System.out.println(Thread.currentThread().getName());
}
public static void main(String[] args) {
final MyObject mo = new MyObject();
/**
* 分析:
* t1线程先持有object对象的Lock锁,t2线程可以以异步的方式调用对象中的非synchronized修饰的方法
* t1线程先持有object对象的Lock锁,t2线程如果在这个时候调用对象中的同步(synchronized)方法则需等待,也就是同步
*/
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
mo.method1();
}
},"t1");
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
mo.method2();
}
},"t2");
t1.start();
t2.start();
}
}
相关文章推荐
- java并发编程之线程同步基础(二)使用锁实现同步
- 并发编程基础概念(一) IO-同步,异步,阻塞,非阻塞
- JAVA基础知识之网络编程——-关于阻塞IO/非阻塞IO/同步IO/异步IO的一些参考文章
- Java并发编程-同步(六)
- JAVA 并发编程实践 - 原子变量与非阻塞同步机制 笔记
- Java基础-网络编程(TCP-客户端并发登录)
- 《Java Concurrency》读书笔记,Java并发编程实践基础
- java并发编程之同步容器
- 同步/异步与阻塞/非阻塞的区别--多线程编程基础
- Java多线程并发编程之构建自定义同步工具
- 【Java并发编程】之十四:图文讲述同步的另一个重要功能:内存可见性
- C++ socket编程基础五(I/O - 同步,异步,阻塞,非阻塞 )
- Java并发编程基础知识片段
- [Java 并发] Java并发编程实践 思维导图 - 第五章 基础构建模块
- Java 并发编程之基础构建模块
- Java 并发编程基础学习
- (35)21.3.6 在其它对象上同步---Java编程思想之并发笔记
- Java并发编程之同步互斥问题
- 【Java并发编程】之十四:图文讲述同步的另一个重要功能:内存可见性
- Java 并发编程之基础构建模块 (二)