一、阻塞和非阻塞 传统的 IO 流都是阻塞式的。也就是说,当一个线程调用 read() 或 write()时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务。因此,在完成网络通信进行 IO 操作时,由于线程会阻塞,所以服务器端必须为每个客户端都提供一个独立的线程进行处理,当 ...
分类:
编程语言 时间:
2018-01-23 16:46:32
阅读次数:
143
Semaphore线程同步机制,当调用acquire()时,内部计数器数值增加;调用release()时,内部计数器递减;计数器值不能小于0,如果等于0,acquire()方法被阻塞,需要等待其他线程调用release()方法。 BoundedSemaphore(value=1),对信号量的计数器设 ...
分类:
其他好文 时间:
2018-01-14 10:56:55
阅读次数:
159
为什么要使用异步任务? 我们知道安卓中更新UI组件必须在UI线程(主线程)中进行更新,为了避免UI线程被阻塞而失去响应,Android一般建议将耗时的操作放在新线程中完成,但是新线程也可能需要动态更新UI组件,比如需要从网上下载一张图片然后在ImageView中显示出来,这时就应该将链接网络,获取网 ...
分类:
移动开发 时间:
2017-12-30 19:08:25
阅读次数:
234
1.第三方框架使用不当 比如AFNetworking的内存泄漏,使用单例模式解决 2.block的循环引用 weakself和strongself配合使用 3.delegate循环引用问题 使用weak修饰即可 4.NSTimer循环引用 注意NSTimer的销毁时机 5.非OC对象内存处理 使用完 ...
分类:
移动开发 时间:
2017-12-27 14:20:51
阅读次数:
256
一、基本概念 二、线程的中断 三、线程的状态 New (新建) Runnable (可运行) Blocked (被阻塞) Waiting (等待) Timed waiting (计时等待) Terminated (被终止) 四、面向对象程序设计课程学习进度条 ...
分类:
编程语言 时间:
2017-12-17 22:07:42
阅读次数:
159
结果分析:当一个线程访问object的一个同步代码块时,其他线程对同一个object的所有其他的同步代码块将被阻塞,这说明同步代码块使用的是对象监视 ...
分类:
其他好文 时间:
2017-12-07 00:28:48
阅读次数:
194
修改或删除数据前先备份,先备份,先备份(重要事情说三遍)! 1、首先,查看线程,分析是否存在阻塞进程,blocked>0都是当前被阻塞的进程 SELECT * FROM sysprocesses where blocked >0 order by blocked ; 2、找到被阻塞的线程后,想要继续 ...
分类:
数据库 时间:
2017-11-24 19:14:42
阅读次数:
372
CyclicBarrier的字面意思是可以循环使用的Barrier,它要做的事情是让一个线程到达一个Barrier的时候被阻塞,直到最后一个线程到达Barrier,屏障才会放开,所有被Barrier拦截的线程才会继续运行。 CyclicBarrier的默认的构造器是CyclicBarrier(int ...
分类:
编程语言 时间:
2017-11-18 12:58:18
阅读次数:
113
在MySQL中,使用MVCC来实现REPEATABLE-READ隔离级别,由于SELECT操作不会对数据加锁,其他回话可以修改当前回话所读取过的数据而不会被阻塞,因此读写不冲突。 在MVCC并发控制中,读操作可以分成两类:快照读 (snapshot read)与当前读 (current read)。 ...
分类:
数据库 时间:
2017-11-17 00:00:25
阅读次数:
286
死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不能正常运行。 简单的说就是:线程死锁时,第一个线程等待第二个线程释放资源,而同时第二个线程又在等待第一个线程释放资源。假设这种情况一直持续下去,这样就会发生死锁现象。 导致死锁的根源 ...
分类:
编程语言 时间:
2017-11-13 18:31:53
阅读次数:
151