同步方法默认用this或者当前类class对象作为锁。 同步代码可以选择以什么来加锁,比同步方法更细颗粒化,同步代码可以同步有同步问题的部分代码而不是整个方法。 同步方法用关键字synchronized修饰方法,同步代码主要修饰需要进行同步的代码块,用synchronized(object){代码内 ...
分类:
其他好文 时间:
2018-06-18 22:15:24
阅读次数:
235
最近工作中遇到了一些关于文件读取权限的问题。当一个程序中对一个固定名称的文件做了读写的操作的时候,外界通过并发式的调用这个应用的时候,可能存在多个进程同时去操作这个文件,这个时候可能会造成调用失败的问题。所以这个时候,在操作文件之前就应该给该操作加锁,遵循先来先行,后来等待的效果,从而保证各个进程都 ...
在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 (2)一个线程持有锁会导致其它所有需要此锁的线程挂起。 (3)如果一个优先级高的线程等待一个优先级低的线 ...
分类:
其他好文 时间:
2018-06-17 18:59:14
阅读次数:
192
1.sychronized简介 在学习知识之前,我们先来看一个现象 开启了10个线程,每个线程都累加了1000000次,如果结果正确的话自然而然总数就应该是10 * 1000000 = 10000000。可就运行多次结果都不是这个数,而且每次运行结果都不一样。这是为什么了?有什么解决方案了?这就是我 ...
分类:
其他好文 时间:
2018-06-17 18:58:47
阅读次数:
240
协程:单线程下的并发。又称微线程。是用户态的轻量级线程,即协程是由用户程序自己控制调度的 要遇到IO才切。 比线程开销更小。 修改共享数据不用加锁 yield greenlet都无法做到遇到IO就切换 gevent 可以监控多个任务之间的IO,遇到IO切换到另一个任务。 yield: Greenle ...
分类:
其他好文 时间:
2018-06-17 16:01:05
阅读次数:
158
一、并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。 mysql:mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索 ...
分类:
数据库 时间:
2018-06-17 12:39:13
阅读次数:
184
mysql与Oracle的区别一、并发性并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。mysql:mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。
分类:
数据库 时间:
2018-06-17 12:34:24
阅读次数:
148
业务背景:存储请求参数token ,token唯一 ,且新的生成旧的失效 思路:因为是多台机器,获取token存入redis,保持唯一,考虑使用redis来加锁,其实就是在redis中存一个key,其他机器发现key有值的话就不进行获取token的请求。 SET操作会覆盖原有值,SETEX虽然可设置 ...
分类:
其他好文 时间:
2018-06-16 21:44:57
阅读次数:
731
muduo是目前我在学习过程中遇到的最具有学习意义的网络库,下文将分析muduo库中的基础设施 Thread和ThreadPool. 首先,介绍在多线程编程中不可缺少的同步措施 Mutex和Condition. + Mutex 有四种操作互斥锁的方式:创建,销毁,加锁,解锁。在muduo中,用一个低 ...
分类:
编程语言 时间:
2018-06-16 19:12:11
阅读次数:
188
相关函数说明 定义锁 定义mutexattr_t变量 设置mutexattr属性 其他相关属性 linux下pthread.h中的线程属性 互斥锁属性 互斥锁的属性在创建锁的时候指定,在LinuxThreads实现中仅有一个锁类型属性,不同的锁类型在试图对一个已经被锁定的互斥锁加锁时表现不同。当前( ...
分类:
其他好文 时间:
2018-06-14 01:21:28
阅读次数:
377