进程:在系统中运行的一个应用程序就是一个进程,每个进程之间是相互独立的,每个进程均运行在其专用且受保护的内存空间内
线程:一个进程的所有任务都是在线程中执行的,每个进程都至少有一个线程(主线程),同一线程的代码是顺序执行的
多线程:一个进程可以开启多条线程,多条线程可以并行执行不同的任务,多线程的并行执行任务其实是CPU在多条线程之间切换调度
优点:
适当的提高了程序执行效率和资源的利用率,当线程执行完所有任务时会自动销毁;
缺点:
1.开启线程需要占用一定的内存空间;
2.开启大量线程占用过多内存,CPU在调用线程中开销过大,降低程序性能;
3.程序设计更加复杂(如线程之间的通讯、线程间的资源共享等).
主线程:一个进程运行后,默认会开启一条线程,成为主线程或UI线程,其主要作用就是处理UI事件、显示刷新UI界面
进程:在系统中运行的一个应用程序就是一个进程,每个进程之间是相互独立的,每个进程均运行在其专用且受保护的内存空间内
线程:一个进程的所有任务都是在线程中执行的,每个进程都至少有一个线程(主线程),同一线程的代码是顺序执行的
多线程:一个进程可以开启多条线程,多条线程可以并行执行不同的任务,多线程的并行执行任务其实是CPU在多条线程之间切换调度
优点:
适当的提高了程序执行效率和资源的利用率,当线程执行完所有任务时会自动销毁;
缺点:
1.开启线程需要占用一定的内存空间;(开启一个线程需要占用512KB)
2.开启大量线程占用过多内存,CPU在调用线程中开销过大,降低程序性能;
3.程序设计更加复杂(如线程之间的通讯、线程间的资源共享等).
主线程:一个进程运行后,默认会开启一条线程,成为主线程或UI线程,其主要作用就是处理UI事件、显示刷新UI界面
加锁:
加锁能有效的防止因多线程抢夺资源造成的数据安全问题,但锁是非常耗费性能的,开发中尽量不要使用锁,将加锁、抢夺资源的逻辑交给服务器处理,减小移动客户端的压力.
1)互斥锁:把读和写的操作当成不可分割的部分,也叫做同步锁;
// 写法
@synchrosized(self) {
do something...
}
作用:
1.保证同一时间只有一条线程能访问共享资源,保证线程安全;
2.当共享数据被一个线程锁定时,另外的线程进入’休眠状态’等待任务执行完毕;当锁定线程任务执行完毕,下个线程会自动唤醒,执行任务;
网友评论