线程与网络常见知识点解答
来源:互联网 发布:sql server数据库 编辑:程序博客网 时间:2024/04/29 12:52
1. 线程与进程的区别和联系?
进程和线程都是由操作系统所体会的程序运⾏行的基本单
元,系统利⽤用该基本单元实现系统对应⽤用的并发性。进程和线程的主要差别在于它们是不同的操作系统资源管理⽅方式。进程有独⽴立的地址空间,⼀一个进程崩溃后,在保护模式下不会对其它进程产⽣生影响,⽽而线程只是⼀一个进程中的不同执⾏行路径。线程有⾃自⼰己的堆栈和局部变量,但线程之间没有单独的地址空间,⼀一个线程死掉就等于整个进程死掉,所以多进程的程序要⽐比多线程的程序健壮,但在进程切换时,耗费资源较⼤大,效率要差⼀一些。但对于⼀一些要求同时进⾏行并且⼜又要共享某些变量的并发操作,只能⽤用线程,不能⽤用进程。
2.什么是线程?什么是进程?两者关系
线程是⼀一组指令的集合,是程序中⼀一个单⼀一顺序的控制流程。进程是整个程序或者部分程序的动态执⾏行。每个正在系统上运⾏行的程序都是⼀一个进程。每个进程中包含多个线程。进程之间不能共享资源,但是线程之间可以共享资源。
3. 实现线程的⽅方式?各⾃自特点是什么?相互间区别是什么?
(1)NSThread:轻量级的⽅方式(具有很少的规则和惯例,依赖的东⻄西少),⽐比较底层和原始。需要⾃自⼰己管理周期,同步的时候需要加锁来控制线程执⾏行顺序,会增加系统开销。
(2)NSOperationQueue:⼀一个NSoperation对象可以通过调⽤用start⽅方法执⾏行任务,默认是同步执⾏行;也可以将NSOperation添加到⼀一个NSOperationQueue中执⾏行,这时是异步的。通过这个⽅方式开启线程后,可以中途停⽌止、继续、取消等操作。如果想控制线程执⾏行顺序,可以通过添加依赖完成。
(3)GCD:苹果提供的,异步执⾏行。提⾼高了代码执⾏行效率和多核的利⽤用率,性能更好。
4、线程同步和异步分别是什么意思?如何实现线程的同步?
线程同步是多个线程同时访问同⼀一资源,等待资源访问结束,浪费时间,效率低。 线程异步:访问资源时在空闲等待时同时访问其他资源,实现多线程机制。 通过添加线程锁实现线程的同步。单线程不加锁可以,但是多线程的时候,对于公共资源,必须加锁。当线程并发,也就是异步访问,就会出现问题。所以要把异步的变成同步的才⾏行。
5、如何实现多线程按顺序执⾏行?
在NSOperationQueue,可以通过添加依赖完成线程的顺序执⾏行。
6. Object C中创建线程的⽅方法是什么?如果在主线程中执⾏行代码,⽅方法是什么?如果想延时执⾏行代码、⽅方法⼜又是什么?
线程创建有三种⽅方法:使⽤用NSThread创建、使⽤用GCD的dispatch、使⽤用⼦子类化的NSOperation,然后将其加⼊入NSOperationQueue;
在主线程执⾏行代码,⽅方法是performSelectorOnMainThread,
如果想延时执⾏行代码可以⽤用performSelector:onThread:withObject:waitUntilDone:
7.What is lazy loading?
懒汉模式,只在⽤用到的时候才去初始化。也可以理解成延时加载。 我觉得最好也最简单的⼀一个列⼦子就是tableView中图⽚片的加载显⽰示了。⼀一个延时加载,避免内存过⾼高,⼀一个异步加载,避免线程堵塞。
8. URI是什么?URL是什么?URL格式?
URI: 统⼀一资源标识符 (类似于⾝身份证号,找到唯⼀一的资源)
URL: 统⼀一资源定位符 (类似于⻔门牌号,⾥里⾯面资源可以有多个)
URL格式:协议://域名:端⼝口号/具体地址!
9. http特点?
超⽂文本传输协议,是⽆无状态的协议。请求应答模式。
10. get、post区别?
get ⽤用于请求少量数据,明⽂文发送。 (新闻、天⽓气等)post ⼤大量数据,密⽂文发送。 (注册、⺴⽹网银等)
11. 做过的项⺫⽬目是否涉及⺴⽹网络访问功能,使⽤用什么完成⺴⽹网络功能?
⺴⽹网络访问可以通过NSURLConnection实现,主要步骤为:
(1)创建⼀一个NSURL对象,设置请求路径(设置请求路径)
(2)传⼊入NSURL创建⼀一个NSURLRequest对象,设置请求头和请求体(创建请求对象)(3)使⽤用NSURLConnection发送NSURLRequest(发送请求)
第三⽅方类库ASIHTTPRequest也可以实现,但是最常⽤用的⽅方式是通过第三⽅方类库AFNetWorking完成的。
12.简单介绍下NSURLConnection类及
+ sendSynchronousRequest:returningResponse:error: 与
–initWithRequest:delegate:两个⽅方法的区别?
NSURLConnection主要⽤用于⺴⽹网络访问,其中
+ sendSynchronousRequest:returningResponse:error:是同步访问数据,即当前线程会阻塞,并等待request的返回的response,
⽽而–initWithRequest:delegate:使⽤用的是异步加载,当其完成⺴⽹网络访问后,会通过delegate回到主线程,并其委托的对象。
- 线程与网络常见知识点解答
- SIP常见的问题与解答
- SIP常见的问题与解答
- SIP常见的问题与解答
- servlet中常见的问题与解答
- 大一新生常见心理难题与解答
- C++新手常见的问题与解答
- 常见的几个网络路由知识点
- Linux网络之端口号常见知识点
- JavaScript单线程的疑问与解答
- 分析解答网络常见的17个问题
- Java - 网络与线程
- Java网络与线程
- .NET知识点解答
- PADS关键知识点解答
- 【经典】servlet中常见的问题与解答
- TP4056 TP4057使用中常见的问题与解答
- 【浅谈递归(二)】常见递归问题的分析与解答
- HDU 5430 Reflect
- Calendar:计算两个日期相差的天数
- Spring AOP的实现原理之<aop:aspectj-autoproxy />的解析
- struts2的搭建
- 解决ListView嵌套在ScrollerView中显示不全以及滑动冲突的问题
- 线程与网络常见知识点解答
- SQL Prompt5 破解版+使用说明
- 消息提示框
- c++的vector使用:c++面试题:从cin读入一组词并把它们存入一个vector对象,然后设法把所有词都改写为大写字母
- java中解析excel(扩展)
- javaScript 内置对象七 (Math)
- 开源分享二(Android相机开发实战)
- Android 系统源码情景分析读书笔记(1)----开发Android 硬件访问服务
- 微信公众号支付Java DEMO