当线程执行请求synchronized方法或块时,monitor会设置几个虚拟逻辑数据结构来管理这些多线程。 请求的线程会首先被加入到线程排队队列中,线程阻塞,当某个拥有线程锁的线程unlock之后,则排队队列里的线程竞争上岗(synchronized是不公平竞争锁),如果运行的线程调用对象wait ...
分类:
编程语言 时间:
2017-08-19 17:00:55
阅读次数:
143
通常情况下,建立索引是加快查询速度的有效手段。但索引不是万能的,靠索引并不能实现对所有数据的快速存取。事实上,如果索引策略和数据检索需求严重不符的话,建立索引反而会降低查询性能。因此在实际使用当中,应该充分考虑到索引的开销,包括磁盘空间的开销及处理开销(如资源竞争和加锁)。例如,如果数据频繁的更新或 ...
分类:
其他好文 时间:
2017-08-19 12:48:20
阅读次数:
156
QueueUserWorkItem方法将非常简单的任务排入队列 下面这个简单的代码,涉及到资源竞争问题,如果主线程先争取到资源,如果没有等待 一段时间,那么QueueUserWorkItem申请的线程没有机会执行。 1 using System; 2 using System.Threading; ... ...
分类:
Web程序 时间:
2017-08-18 20:10:00
阅读次数:
209
PS:以下是性能測试的主要概念和计算公式,记录下: 一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢。系统吞吐能力越低,反之越高。 系统吞吐量几个重要參数:QPS(TPS ...
分类:
其他好文 时间:
2017-08-15 17:16:42
阅读次数:
206
Innodb引擎 1. innodb_buffer_pool_size 会缓冲索引页、数据页、undo页、插入缓冲、自适应哈希索引、innodb存储的锁信息、数字字典信息等 2.innodb_buffer_pool_instances 允许多个缓冲池实例,每页根据哈希平均分配到不同缓冲池实例中,减少 ...
分类:
数据库 时间:
2017-08-10 22:41:49
阅读次数:
196
在我们的实际应用其中可能常常会遇到这样一个场景:多个线程读或者、写相同的数据,訪问相同的文件等等。对于这样的情况假设我们不加以控制,是非常easy导致错误的。在java中,为了解决问题,引入临界区概念。所谓临界区是指一个訪问共用资源的程序片段,而这些共用资源又无法同一时候被多个线程訪问。在java中 ...
分类:
编程语言 时间:
2017-06-25 14:18:10
阅读次数:
233
并发本身并不复杂,但是因为有了资源竞争的问题,就使得我们开发出好的并发程序变得复杂起来,因为会引起很多莫名其妙的问题。packagemain
import(
"fmt"
"runtime"
"sync"
)
var(
countint32
wgsync.WaitGroup
)
funcmain(){
wg.Add(2)
goincCount()
goincCount()
wg.Wait(..
分类:
编程语言 时间:
2017-06-07 21:45:12
阅读次数:
630
1,假如有两个线程,一个线程A,一个线程B都会访问一个加锁方法,可能存在并发情况,但是线程B访问频繁,线程A访问次数很少,问如何优化。(然后面试官说有了解过重度锁和轻度锁吗) a,竞争资源不激烈,选择Synchronized: 在资源竞争不是很激烈的情况下,Synchronized的性能要优于Ree ...
分类:
编程语言 时间:
2017-05-22 13:32:41
阅读次数:
201
改动共享数据会给共享数据带来问题。假设共享的数据是仅仅读的话,就不会带来问题。假设数据能够改动。有超过两个以上的线程改动数据就会带来问题。必须用一些方法来消除问题。 资源竞争(race condition) 资源竞争是指在多线程环境下,程序结果的输出依赖于相关线程的运行顺序。英文:A race co ...
分类:
其他好文 时间:
2017-04-29 18:54:03
阅读次数:
243