Java多线程基础之对象锁的同步与异步

xiaoxiao2021-02-27  251

同步: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线程,是异步的。

转载请注明原文地址: https://www.6miu.com/read-11232.html

最新回复(0)