就社会情况来看,我只能说什么火,人们就追求什么,现在大街上大把大把的程序员在找工作,也正是因为苹果公司推的的iPhone、ipad也随之带来了一大批的iOS开发兴趣爱好者,所以很多iOS培训机构就忙起来了,当然蓝鸥也成为众学员考虑的培训机构。

那么想成功的面试成功iOS开发程序员的话,在面试的时候往往都会被问到多线程的问题,对多线程概念的掌握和理解水平,也是用来衡量一个程序员的重要指标之一。那么在这里就由我为大家支一招吧!

那么举一个例子一看大家就明白了:

假如我们把公司看做是一个进程,那么人就是其中的线程。进程必须得有一个主线程,公司在创业初期往往可能出现一人打天下的现象,但是,至少得有一个人,公司才能运作。公司创业初期,业务还不算太多,往往就是老板一个人身兼数职,一天如果只有1、2趟活儿,应该还是忙得过来的。时间长了,随着业务的发展、口碑的建立,生意越来越兴隆,一个人肯定就忙不过来了。假设一天有5个活儿,老板一个人必须搬完A家才能搬B家,搬到黄昏估计也就搬到C家,D和E家都还在焦急地等待着呢。老板一个人要充当搬运工、司机、业务联系人、法人代表、出纳等众多角色,累死累活公司的规模也上不去,人手不够制约了公司的发展,就需要增添人手。

就上面的情况要怎么解决呢,所以就要用到多线程了,用编程的话来说就是“再起个线程”。

就上面例子,要想新成立一家搬家公司,要准备好将来和客户签的合同书,写出的一串代码:

142926305.jpg

看上去很简单,但是好理解啊!申请注册一家公司,并组建好初创团队,代码如下:

143007151.jpg

143010788.jpg

我们在前面设置了每次搬家耗时5秒钟,咱们把它想象成5个小时。嗯,一天接一个单子,到了后来生意越来越好,有时候一天要接3个单子,这就最少要工作15个小时了,还要操心公司的运营等问题,有点忙不过来了,那么按时间算来,老板要想完成5个或5个以上的单子就有困难了,严重制约了公司的发展:

143046495.jpg

要想改掉眼前的情况就一定要想出办法来解决,那么最简单的方法就是,合理分配,招聘几个员工,再买几辆车,大家分头行动,不仅分担了工作负担,而且在规模扩大的同时还可以完成更多更大的单子。那么用多线程来实现,代码如下:

143118597.jpg

这样合理分配,就发现,做三个单子的时间跟做一个单子的时间是一样的,提高了效率也扩大了公司规模。但是,既然引入了新的工作机制,既然这样,公司当然也要有相关的制度了,所以也要随之调整一下:

143150642.jpg

调整的只是MoveHouse这个方法内部的一些实现细节。公司接到的单子都保存在Contracts中,所以搬家的时候需要去拿一个单子然后根据单子上的信息来工作。原先我们只有一个线程在操作Contracts,倒也不觉得什么,现在有多个线程都在对Contracts中的元素进行存取,我们不得不提防一些意外发生。这就是在使用多线程的时候常常需要考虑的并发问题,所以我们用了lock关键字,当一个线程要操作Contracts时,它先把Contracts锁起来,其实就是声明一下:“现在我在操作它,你们谁都不要动,等我弄完了再说。”在lock块结束时被锁定的对象才会被解锁,其它的线程现在才可以去操作它。

用了多线程之后就会在最短的时间内完成很多事情,比先前要强太多了,如果有兴趣的话,你不妨也试试,希望能够帮助到正在寻找iOS开发技巧的你。