Java多线程基础之对象锁的同步与异步
2017-06-06 15:42
127 查看
同步:synchronized
同步的概念就是共享,如果不是共享的资源,就没有必要进行同步。
异步:asynchronized
异步的概念就是独立,相互之间不受到任何制约。
同步的目的就是为了线程安全,对于线程安全来说,需要满足两个特性:(原子性)同步
可见性
public class MyObject { public synchronized void method1() throws InterruptedException { System.out.println(Thread.currentThread().getName()); Thread.sleep(4000); } public void method2(){ System.out.println(Thread.currentThread().getName()); } public static void main(String[] args) { final MyObject ob =new MyObject(); Thread t1 =new Thread(new Runnable() { @Override public void run() { try { ob.method1(); } catch (InterruptedException e) { e.printStackTrace(); } } },"t1"); Thread t2=new Thread(new Runnable() { @Override public void run() { ob.method2(); } },"t2"); t1.start(); t2.start(); } }
上面的执行结果是 t1,t2同时打印出来,四秒钟后运行结束,若将method2方法用synchronize修饰,则先执行t1线程,然后再执行t2线程,是异步的。
相关文章推荐
- Java基础知识强化之多线程笔记07:同步、异步、阻塞式、非阻塞式 的联系与区别
- [多线程]线程基础(对象锁、class锁、同步、异步)
- 【Java多线程】对象锁的同步和异步
- Java多线程编程基础之线程对象
- Java基础多线程间通讯同步操作示例一(未优化):
- java多线程:锁对象Lock-同步问题更完美的处理方式
- 黑马程序员学习log第四篇基础知识:JAVA的面向对象之多线程总结
- java基础知识回顾之java Thread类学习(五)--java多线程安全问题(锁)同步的前提
- thrift java多线程非阻塞同步/异步调用实例
- java基础之:多线程实现/启动/状态+同步+线程池
- Java多线程编程基础之线程对象
- java 多线程基础知识2---同步机制
- 同步/异步与阻塞/非阻塞的区别--多线程编程基础
- JAVA 多线程静态同步函数的锁是class 对象
- Java基础-多线程-③线程同步之synchronized
- Java多线程 同步 锁 条件对象
- 【 Java多线程】编程基础之线程对象
- 黑马程序员-JAVA基础-多线程的安全、同步与死锁
- 黑马程序员:Java基础总结----多线程安全性&同步
- java基础——多线程(线程的同步互斥与通信)