自 Java 5 开始,java.util.concurrent.locks 包中包含了一些锁的实现,因此你不用去实现自己的锁了。但是你仍然需要去了解怎样使用这些锁。 一个简单的锁 让我们从 java 中的一个同步块开始: 可以看到在 inc()方法中有一个 synchronized(this)代码 ...
分类:
编程语言 时间:
2016-09-01 12:30:01
阅读次数:
240
1.线程是应用程序的最小控制单元 执行结果: 在这里,我们创建了5个线程,每个线程在程序还没有结束的时候就开始都对NUM进行了相应的操作,time.sleep(2)阻塞了进程的执行,造成进程的切换,所以在等待的2秒钟了,所有的线程都执行了-1的操作,最后都打印出来了最终的结果5.因为线程是共享一个进 ...
分类:
编程语言 时间:
2016-08-31 02:10:25
阅读次数:
203
目录:一、线程1.线程基本操作1.创建线程的方式2.线程锁3.信号量以及事件4.条件以及定时器2.队列的使用1.队列的使用2.生产者消费者模型3.自定义线程池二、进程1.进程基本操作1.创建进程2.进程锁2.进程池三、协程1.greenlet2.gevent四、缓存1.python操作memcache2.python操作red..
分类:
编程语言 时间:
2016-08-29 00:24:16
阅读次数:
312
本章内容: 线程(线程锁、threading.Event、queue 队列、生产者消费者模型、自定义线程池) 进程(数据共享、进程池) 协程 ...
分类:
编程语言 时间:
2016-08-22 18:17:02
阅读次数:
142
解决Socket沾包问题——C#代码 前天晚上,曾经的一个同事问我socket发送消息如果太频繁接收方就会有消息重叠,因为当时在外面,没有多加思考 第一反应还以为是多线程导致的数据不同步导致的,让他加个线程锁搞定。后来回到家慢慢思考感觉这个和加锁没啥关系,如果是多线程导致的,消息只会被覆盖呀。后来就 ...
死锁(DeadLock)死锁的概念所谓死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去,此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。例如,如果线程A锁住了记录1并等待..
分类:
其他好文 时间:
2016-07-30 06:57:46
阅读次数:
159
sleep()不会释放锁 wait()释放锁 同步:多线程中,对同一份资源同时访问,保证数据的正确性、安全性。 难点:范围过大,则效率低;范围过小,则不安全。 synchronized:锁 一、同步方法 public synchronized static |protected|不写|private ...
分类:
编程语言 时间:
2016-07-24 19:08:21
阅读次数:
128
一. 进程: 基本使用 进程锁 进程池 进程数据共享 二. 线程: 基本使用 线程锁 线程池 队列(生产者消费者模型) 三. 协程: gevent greenlet 四. 缓存: memcache redis (一)线程: 所有的线程都运行于一个进程中,一个进程中可以执行多个线程。多个线程共享进程内 ...
分类:
编程语言 时间:
2016-07-22 21:14:31
阅读次数:
160
1. 线程锁 如果不控制多个线程对同一资源进行访问的话,会对数据造成破坏,使得线程运行的结果不可预期。因此要引进线程锁。 线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引入互斥锁。 互斥锁为资源引入一个状态:锁定/非锁定。某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”, ...
分类:
编程语言 时间:
2016-07-22 14:17:36
阅读次数:
357