从JDK1.2起,就有了HashMap,HashMap不是线程安全的,因此多线程操作时需要格外小心。 在JDK1.5中,Doug Lea给我们带来了concurrent包,从此Map也有安全的了。 ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchroni ...
分类:
其他好文 时间:
2017-08-13 18:06:59
阅读次数:
174
1、需求 查找192.168.0.*网段中所有未使用过的IP 2、实现 我们知道查找未使用IP的方法可以使用ping命令完成。对于单个IP的判断,使用命令如下 如果上述类似消息,则判断该IP是连通的即在使用中。如果没有,则可以判断未使用。如果只是查找一个IP,可以多试几个就知道了,但是这种靠试效率太 ...
分类:
编程语言 时间:
2017-08-13 10:01:15
阅读次数:
260
CopyOnWriteArrayList是一个在多线程操作中线程安全的ArrayList的一个变种,她在所有对ArrayList对象的编辑操作(add,set等)都会复制一份副本,因此无论是对ArrayList操作还是对其iterator操作都不会抛ConcurrentModificationExc ...
分类:
其他好文 时间:
2017-08-01 11:07:23
阅读次数:
200
GCD的队列能够分为2大类型,分别为串行队列和并发队列 串行队列(Serial Dispatch Queue): 一次仅仅调度一个任务,队列中的任务一个接着一个地运行(一个任务运行完成后。再运行下一个任务) 创建一个队列 dispatch_queue_t q = dispatch_queue_cre ...
分类:
移动开发 时间:
2017-07-22 12:02:01
阅读次数:
251
众所周知,无限制下多线程操作共享变量是危险的,为了保证线程安全语义,一般的建议是在操作共享变量时加锁,比方说在用synchronized关键字修饰的方法内读写共享变量。 但是synchronized开销较大,有没有更轻量更优雅的解决方案呢? volatile是轻量级的synchronized,在正确 ...
分类:
编程语言 时间:
2017-07-20 21:05:34
阅读次数:
137
NSOperation简介 相对于 GCD ,具有面向对象的特征,比 GCD 更简单易用,代码可读性强 NSOperatioin 单独使用时, 不具有开辟新线程的能力, 只是同步执行操作, 需要配合 NSOpeationQueue 来实现多线程操作 //验证: 没有队列时, 同步执行 //子类 NS ...
分类:
编程语言 时间:
2017-07-19 14:14:57
阅读次数:
147
Java中的线程 一个程序的运行须要启动一个应用进程,一个进程能够创建多个线程。帮助应用完毕多任务操作。实现并发运行。在Java中线程是被封装成Thread类。进行多线程操作时仅仅须要继承一个Thread类,实现自己的功能就可以。然后开启此线程,或者你也能够实现一个Runnable接口。然后将其传递 ...
分类:
编程语言 时间:
2017-07-18 00:15:31
阅读次数:
204
Set集合 Set和Collection基本相同,Set不允许有重复元素,集合内的元素是无序的。 1) HashSet类 特点:不能保证元素的排列顺序、不是同步的,多线程操作时需要通过代码保证其同步性、集合元素值可以为null。HashSet添加原始的时候根据元素的hashCode值来计算 它的存储... ...
分类:
编程语言 时间:
2017-07-09 16:12:39
阅读次数:
253
一、多线程 1、操作系统有两个容易混淆的概念,进程和线程。 进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。 线程:表示程序的执行流程,是CPU调度执行的基本 ...
分类:
编程语言 时间:
2017-06-28 19:05:30
阅读次数:
192
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。作者:wwww198860 ...
分类:
编程语言 时间:
2017-06-14 11:29:41
阅读次数:
179