教程集 www.jiaochengji.com
教程集 >  脚本编程  >  java  >  正文 浅析ObjectC的GCD(Grand Central Dispatch)机制

浅析ObjectC的GCD(Grand Central Dispatch)机制

发布时间:2016-11-20   编辑:jiaochengji.com
教程集为您提供浅析ObjectC的GCD(Grand Central Dispatch)机制等资源,欢迎您收藏本站,我们将为您提供最新的浅析ObjectC的GCD(Grand Central Dispatch)机制资源
下面本文章重眯给各位介绍浅析ObjectC的GCD(Grand Central Dispatch)机制,文章虽然简单但讲到了重点之上,希望文章对你手机开发会带来帮助。

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

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy9862')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy9862>

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

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

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy7145')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy7145>

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的GCD(Grand Central Dispatch)机制
C语言中多线程NSThread/NSOperation/GCD的使用
php程序员面试题及答案
javascript 随机数生成方法介绍
浅析 innerHTML 性能优化的原理
浅谈cgi、fastcgi及php-fpm的原理概念
jquery获取父元素的方法示例
ThinkPHP5核心类Request远程代码漏洞分析
python 回调函数是什么意思
jQuery源码分析系列

[关闭]
~ ~