一、需求 在应用开发过程中,启动服务开启线程锁等待服务返回解锁,为了避免点击home键使线程锁卡死的bug,需要监控home键,解锁线程。 二、实现 在应用时,需要register和unregister。 ...
分类:
移动开发 时间:
2017-09-06 16:22:14
阅读次数:
166
一、synchronized 这货可以锁对象,锁变量,锁方法,锁代码,好像什么都能锁,缺点就是如果一个锁堵了,其他的只能等待忙并不能把当前的锁给释放。二、 ReentrantLockReentrantLock 类实现了Lock ,它拥有与synchronized 相同的并发性和内存语义,但是添加了类 ...
分类:
编程语言 时间:
2017-09-05 13:58:36
阅读次数:
155
写在前面:与之前主流程序语言(c/c++等)直接使用物理硬件和操作系统的内存模型不同,java虚拟机为了屏蔽各种硬件和操作系统的内存访问差异定义了一种java内存模型。其主要定义程序中各个变量的访问规则(在虚拟机中将变量存储到内存和从内存中取出变量的底层细节)。 线程、主内存、工作内存之间的交互关系 ...
分类:
编程语言 时间:
2017-09-05 00:08:16
阅读次数:
249
1. Difference between Thread.sleep and Object.wait Thread.sleep: 会让当前线程休眠进入阻塞状态并释放CPU,提供其他线程运行机会且不考虑优先级,但如果持有同步锁,不会释放 Thread.yield: 类似sleep方法,但无法指定时间并 ...
分类:
编程语言 时间:
2017-09-03 15:38:27
阅读次数:
165
线程在执行的过程中,容易出现安全问题,所谓的安全问题就是: 对需要同步的变量进行多线程操作时,会使变量的判定发生问题,比如卖票的问题可能出现0票或者-1,-2的情况, 那么我们就需要一个锁来对需要同步的变量或者方法进行标记,指示: 该变量或方法在某个时刻或时间段只能被一个线程所执行 1 //错误代码 ...
分类:
编程语言 时间:
2017-09-01 22:15:30
阅读次数:
132
互斥锁,递归锁,信号量 以上都是进程(线程)锁,下面我就一一解释一下 最普通互斥锁 看一下最后执行时间,如果没有互斥锁,线程是并行执行,时间在1s多点,而有互斥锁后,线程变成串行执行,时间是10s多点, 它有什么作用:保证同一时间只有一个进程(线程在修改数据,从而使修改的共享数据安全),也是为什么C ...
分类:
其他好文 时间:
2017-08-30 16:39:21
阅读次数:
156
昨天看JVM原理时,简单总结了下java运行时的数据区域: ...
分类:
编程语言 时间:
2017-08-23 10:19:22
阅读次数:
124
Mutex在线程协作的过程中起互斥的左右,效果与线程锁类似。 ...
分类:
编程语言 时间:
2017-08-21 09:53:21
阅读次数:
149
当线程执行请求synchronized方法或块时,monitor会设置几个虚拟逻辑数据结构来管理这些多线程。 请求的线程会首先被加入到线程排队队列中,线程阻塞,当某个拥有线程锁的线程unlock之后,则排队队列里的线程竞争上岗(synchronized是不公平竞争锁),如果运行的线程调用对象wait ...
分类:
编程语言 时间:
2017-08-19 17:00:55
阅读次数:
143
boost_array_bind_fun_ref Array.cpp #include<boost/array.hpp> #include <iostream> #include <string> using namespace std; using namespace boost; void ma ...
分类:
编程语言 时间:
2017-08-18 18:46:44
阅读次数:
123