对象锁的同步和异步

1.同步:synchronized

  同步的概念就是共享;如果不是共享的资源,就没有必要进行同步

2.异步:asynchronized

  异步的概念就是独立,相互之间不受到任何限制.就好像我们学习http的时候,在页面发起Ajax请求,我们还可以继续浏览或操作页面的内容,二者之间没有任何关系.

3.同步的目的就是为了线程安全,其实对于线程安全来说,需要满足两个特性:

  原子性(同步)

  可见性

4.实例:MyObject.java

执行结果:

会发现t1,t2是一起执行的,4秒钟之后t1之行结束

=============================================================

示例总结:

  A线程先持有object对象的Lock锁,B线程如果在这个时候调用对象中的同步(synchronized)方法则需要等待,也就是同步

  A线程先持有object对象的Lock锁,B线程可以异步的方式调用对象的非synchronized修饰的方法.

原文地址:https://www.cnblogs.com/curedfisher/p/11978409.html

时间: 2024-08-29 04:29:25

对象锁的同步和异步的相关文章

java 线程之对象的同步和异步

一.多线程环境下的同步与异步 同步:A线程要请求某个资源,但是此资源正在被B线程使用中,因为同步机制存在,A线程请求不到,怎么办,A线程只能等待下去. package com.jalja.org.thread.demo01; public class Thread02 { public synchronized void method1(){ System.out.println("method1:"+Thread.currentThread().getName()); try { T

.NET 同步与异步之锁(Lock、Monitor)(七)

本随笔续接:.NET同步与异步之相关背景知识(六) 在上一篇随笔中已经提到.解决竞争条件的典型方式就是加锁 ,那本篇随笔就重点来说一说.NET提供的最常用的锁 lock关键字 和 Monitor. 一.lock关键字Demo public object thisLock = new object(); private long index; public void AddIndex() { lock (this.thisLock) { this.index++; if (this.index >

Python学习第47天(递归锁、同步对象、信号量)

今天三个部分的知识.递归锁(解决同步锁造成的锁死现象).同步对象(类似一个锁,使两个线程之间进行同步).信号量(控制线程数量的一个锁),悄悄的说一下,算上昨天的同步锁,虽然已经讲了四种锁了,但是据说总共是有五种锁的,最后一个我还不知道是个啥. 一.递归锁 昨天引入了同步锁的概念,但是因为同步锁的引入,又发生了一个问题,就是两个锁来回锁,导致程序最终被锁死,你等我我等你,谁都没法运行了,先看一下锁死的情况吧,情况如下: import threading,time class myThread(th

java 类锁与对象锁(实例锁)同步问题

众所周知,synchronized可修饰方法和代码块,可作用于类或者对象. 当修饰代码块时,synchronized(object) 作用于对象,只约束该对象. synchronized(class)作用于类,约束类所有的对象. 修饰方法时,synchronized 修饰static方法时,作用于类.修饰非static方法时作用于对象. 注意类锁和对象锁是两个不同的锁,二者不会发生同步关系. 由于static变量,可被static方法调用,也可被非static方法调用,当二者同时被synchro

.NET 同步与异步之锁(ReaderWriterLockSlim)(八)

本随笔续接:.NET 同步与异步之锁(Lock.Monitor)(七) 由于锁 ( lock 和 Monitor ) 是线程独占式访问的,所以其对性能的影响还是蛮大的,那有没有一种方式可是实现:允许多个线程同时读数据.只允许一个线程写数据呢?答案是肯定的. 读写锁 ReaderWriterLock .就是 支持单个写线程和多个读线程的锁.自.NET 3.5 开始 ReaderWriterLockSlim.登上舞台,ReaderWriterLockSlim 可以看做是 ReaderWriterLo

java同步机制对象锁使用方式比较

class Sync { private byte[] lock = new byte[0]; public void sync() throws InterruptedException { synchronized (lock) { runThread(); } } public void thisSync() throws InterruptedException { synchronized (this) { runThread(); } } public synchronized st

java的同步方法和同步代码块,对象锁,类锁区别

/** * @author admin * @date 2018/1/12 9:48 * 作用在同一个实例对象上讨论 * synchronized同步方法的测试 * 两个线程,一个线程调用synchronized修饰方法,另一个线程可以调用非synchronized修饰的方法,互不影响 */ public class SynchronizedTest { public synchronized void methodA() { try { for (int i = 0; i < 5; i++)

Java多线程 同步 对象锁

多线程.同步: https://www.cnblogs.com/GarfieldEr007/p/5746362.html Java对象锁和类锁全面解析(多线程synchronized关键字): http://blog.csdn.net/u013142781/article/details/51697672 Java Object对象中的wait,notify,notifyAll通俗理解 http://blog.csdn.net/vk5176891/article/details/53945677

27 Apr 18 GIL 多进程多线程使用场景 线程互斥锁与GIL对比 基于多线程实现并发的套接字通信 进程池与线程池 同步、异步、阻塞、非阻塞

27 Apr 18 一.全局解释器锁 (GIL) 运行test.py的流程: a.将python解释器的代码从硬盘读入内存 b.将test.py的代码从硬盘读入内存  (一个进程内装有两份代码) c.将test.py中的代码像字符串一样读入python解释器中解析执行 1 .GIL:全局解释器锁 (CPython解释器的特性) In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple na