美文网首页
互斥锁经典例子

互斥锁经典例子

作者: X_code_ZH | 来源:发表于2018-05-30 16:58 被阅读0次

无意发现小伙伴群(一群攻城狮)里面讨论了一个互斥锁使用的经典例子,自己也研究一下。

代码
输出结果

很明显可以看出,method1和method2执行相差10s(此处部分同学疑问为什么不是12s),method2和method3执行相差3s

@synchronized(obj){
}

obj被加锁,当下次调用@synchronized(obj)时判断当前obj是否是锁定状态,如果非锁定,及执行内部方法,并对obj加锁,执行完内部方法后解锁。

所以method1执行10s之后才释放了self,对于为什么不是12s,这个跟并行线程队列有关,当两个任务异步加在同一个并行线程队列后,可以认为是在同时执行,method1后面的sleep(10)中,sleep(2)也并行在执行。本质他们分别由不同的线程执行,所以相差10s。

执行sleep(2)的线程
执行sleep(10)的线程

总结:
1、@synchronized(obj){}:时判断当前obj是否是锁定状态,如果非锁定,及执行内部方法,并对obj加锁,执行完内部方法后解锁。
2、异步添加多个任务到并行线程队列,这些任务分别由不同的线程执行。

相关文章

  • 互斥锁经典例子

    无意发现小伙伴群(一群攻城狮)里面讨论了一个互斥锁使用的经典例子,自己也研究一下。 很明显可以看出,method1...

  • 【第58天】python全栈从入门到放弃

    1 递归锁Rlock()和互斥锁 递归锁 互斥锁 2 条件Condition 条件的例子 3 守护进程和守护线程与...

  • 线程同步与互斥

    Linux--线程编程 多线程编程-互斥锁 线程同步与互斥 互斥锁 信号量 条件变量 互斥锁 互斥锁的基本使用...

  • Golang 锁的相关知识

    Golang锁分类:互斥锁(Mutex)、读写锁(RWMutex)。 互斥锁 在编写代码中引入了对象互斥锁的概念,...

  • iOS底层探索-多线程锁

    多线程的锁大致可分为两大类:互斥锁、自旋锁;也可以分为三类:互斥锁、自旋锁、读写锁。 一、互斥锁:互斥+同步(强调...

  • go-锁机制

    Golang中的锁机制主要包含互斥锁和读写锁 互斥锁 互斥锁是一种简单的加锁的方法来控制对共享资源的访问,互斥锁只...

  • 线程锁

    1.常见的锁包括:互斥锁,自旋锁。 2.互斥锁是指锁的类型,自旋锁是指锁的实现方式。 3.互斥锁:当上...

  • 算法:读写者问题

    锁解析 : RWMutex : 读-写互斥锁 WWMutex : 写-写互斥锁 WPriorityMutex =...

  • 可重入读写锁 ReentrantReadWriteLock

    读写锁分为读锁和写锁,多个线程获取读锁不互斥,读写锁、写写锁互斥。 输出

  • C++锁

    锁的种类 互斥锁、条件锁、自旋锁、读写锁、递归锁。 互斥锁 头文件: 类型:pthread_mutex_t, 函数...

网友评论

      本文标题:互斥锁经典例子

      本文链接:https://www.haomeiwen.com/subject/rkhxsftx.html