1.Python多线程run方法的中使用while循环时,如果在循环体没有使用停止程序机制,会一直运行下去.因此楼主如果想让编码方式得当,可以使用信号量或者其他变量机制通知循环体停止,或者判断队列是否为空,若为空,直接break,退出循环.

2.run中的死循环不是自旋锁,假如循环体内有资源竞争,给加了个锁,但这种锁也是互斥锁.

python的锁使用的是信号量semaphore,不是spinlock.

// https://svn.python.org/projects/python/trunk/Python/thread_atheos.h

static int fastmutex_lock(fastmutex_t * mutex)

{

atomic_t prev = atomic_add(&mutex->count, 1);

if (prev > 0)

return lock_semaphore(mutex->sem);

return 0;

}

自旋锁:多线程同时访问同一个资源,为防止资源的读取修改不一致设置的一种锁,如果线程访问资源时,已经有线程占有资源,那么后者线程会等待当前线程释放资源,此时后者(不休眠)一直运行CPU检测前者占有资源是否释放,这种后者访问并一直检测资源占有的机制就是自旋锁.

互斥锁:目的和自旋锁一样,但机制不一样,当线程占用资源后,加上锁,后者线程访问时,由于资源被占有,转入休眠(sleep)状态,等资源被释放后,通过信号量通知排队等候的线程。

java 自旋锁与互斥锁_如何理解自旋锁和互斥锁?相关推荐

  1. 聊聊高并发(二十七)解析java.util.concurrent各个组件(九) 理解ReentrantLock可重入锁

    这篇讲讲ReentrantLock可重入锁,JUC里提供的可重入锁是基于AQS实现的阻塞式可重入锁.这篇 聊聊高并发(十六)实现一个简单的可重入锁 模拟了可重入锁的实现.可重入锁的特点是: 1. 是互 ...

  2. mysql锁的应用场景_浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景

    Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |-- ...

  3. python gil锁存在的意义_关于python的GIL全局解释器锁的简单理解

    GIL是解释器内部的一把锁,确切一点说是CPython解释器内部的一把锁,所以要注意区分 这和我们在Python代码中使用线程锁Lock并不是一个层面的概念. 1. GIL产生的背景: 在CPytho ...

  4. 乐观锁实现接口幂等性_深入理解幂等性

    什么是幂等性 HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外).也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同. ...

  5. java类二次加载_深入理解java之类加载器

    一.类与类加载器 类加载器:实现加载阶段的第一步,通过一个类的全限定名来将这个类的二进制字节流加载进jvm. 类与类加载器:任意一个类唯一性都是由它本身和加载它的类加载器确定,两个类是否相等在它们是由 ...

  6. java中线程调度遵循的原则_深入理解Java多线程核心知识:跳槽面试必备

    多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关 ...

  7. 简述java中的注释以及用法_怎样理解 Java 注解和运用注解编程?

    正好最近在公众号(BetterAndroid)发了一篇关于注解的文章,贴在这里吧,希望对题主有帮助. 一.什么是注解 我们都知道在Java代码中使用注释是为了提升代码的可读性,也就是说,注释是给人看的 ...

  8. java compareto方法怎么排序的_深入理解Java中Comparable和Comparator排序

    本文有牛旦教育原创,头条首发,转载注明来源. 如何为需要的排序算法选择正确的接口?通过本文的分析讲解,我们会找到答案参考答案. 程序员经常需要将数据库中的元素排序为集合.数组或映射.在Java中,我们 ...

  9. Java基本数据类型的自动转换_彻底理解Java中的基本数据类型转换(自动、强制、提升)...

    说基本数据类型转换之前,先了解下 Java 中的 8 种基本数据类型,以及它们的占内存的容量大小和表示的范围,如下图所示. 重新温故了下原始数据类型,现在来解释下它们之间的转换关系. 自动类型转换 自 ...

最新文章

  1. leetcode算法题--二叉树中和为某一值的路径
  2. 16位汇编 call调用函数 通过栈来传递参数
  3. web开发的发展历史
  4. 物联网架构----EMQ-Hook了解、连接Kafka发送消息
  5. unity 后台计时器实现
  6. NYOJ 58 步数最少 【BFS】
  7. linux 移出权限,如何在 Ubuntu 上为用户授予和移除 sudo 权限
  8. Javaweb安装教程
  9. 计算机信息管理企业资源规划综合实训,企业资源规划(ERP)综合实训细则
  10. 学校计算机房的制度,小学计算机房管理制度
  11. [日常]wps插入页眉页脚
  12. 小学到大学各类英语教学视频(一)
  13. HTTP状态码404、413、500
  14. 【STM32F429的DSP教程】第2章 Matlab R2018a的安装
  15. shl and shr
  16. 入行测试已经4年了 ,进华为后迷茫了3个月,做完这个项目我决定离职....
  17. IEEE802.16e 协议中LDPC编解码原理说明
  18. python利用微信的方法_用Python玩转微信
  19. 有限体积法、有限差分法和有限元法介绍
  20. 程序员团队名称和口号_济南市大学生双创孵化平台创业菁英实训营2019年第五期【最具人气创业团队】由你来选!...

热门文章

  1. 关于计划的执行情况总结
  2. 驰为Hi8 pro 安卓5.1 root
  3. [工具使用]WpScan
  4. Android内存泄露测试不再蓝瘦,香菇
  5. css3 3d关键点 淘宝购物节的3D效果 如何实现的 h5
  6. 处理urlparse/urllib.parse中修改url参数结果的奇思异想
  7. 第二章_机器学习基础
  8. 前端:js实现接口回调
  9. super/this
  10. VBOX修改vhd/vdi存储空间大小