objectc的基本语法|浅析ObjectC的GCD(Grand Central Dispatch)机制

时间:2019-05-09  来源:js教程  阅读:

GCD机制 vs JAVA线程池
1. GCD执行起来比JAVA真心方便
ObjectC GCD:可执行的为代码片段(code block)

 代码如下

dispatch_async(queue,^{
 NSLOG(@"hello,word");
});
 

JAVA: 必须是对象(可以用无名类)

 代码如下

pool.submit(new Runnable(){
 public void run(){
  System.out.println("hello,world");
 }
});
 

2.GCD不用关心线程的建立和释放
GCD机制更为傻瓜式,不用关心线程何时建议,何时释放,只管用,建立和释放的问题交给运行环境解决。
JAVA得自己建立不同的线程池,还得关心最大线程数,须手工关闭线程池(否则会出现最大线程数超的问题)。

3.GCD的线程机制更为高效
GCD机制线程可以说与生俱来,与程序员打交道操作是一个个的queue,线程是躲在queue后面,执行queue里面的代码片段的,而且当线程不够用时,系统会自己调度,创新新的线程,而所有这一切,程序员都是不知道的。线程创建和销毁可以全局调度,减少无谓开销。
JAVA的多线程机制,线程池大概相当于GCD的queue,不同的是,每个线程池的线程都是独立的,相互之间不能互相挪用。这就要求程序员去规划每个池的线程规模及建立和销毁策略,当系统规模稍大时,在同一个JVM中,可能存在大量线程池,A线程池忙碌时,B线程池可能极为空闲,但A线程池由于无法挪用B线程池的线程,从而导致线程创建和销毁频率大大上升。

4.结论
无论从性能,简洁性,易用性方面,GCD机制都比JAVA的多线程机制要好;希望JAVA虚拟机可以在某个版本引入GCD特性。

objectc的基本语法|浅析ObjectC的GCD(Grand Central Dispatch)机制

http://m.bbyears.com/wangyezhizuo/50087.html

推荐访问:
相关阅读 猜你喜欢
本类排行 本类最新