安卓
Android中的多线程主要分为两类:主线程与子线程
- APP一启动,本身就是一个线程,这个线程被称为主线程mainThread,负责显示界面,跟用户交互。 界面通常被称为UI(User
Interface),主线程也被称为UI线程。
- 别的为子线程
两个原则(同样适用于ios):
- 主线程不能实行网络请求/文件读写等耗时操纵
- 子线程不能实行UI刷新
步伐例子,写一个耗时操纵,假设从网络获取了字符串
- private String getStringFormNet(){
- //假设从网络获取了字符串
- String result = ''
- StringBulider stringBulider = new StringBulider();
- //模拟一个耗时操作
- for(int i=0,i<100,i++){
- stringBulider.append("字符串"+i)
- }
- try{
- //此处休眠5s
- Thread.sleep(5000):
- }
- catch(InterruptedException e){
- e.printStackTrace();
- }
- result = stringBulider.toString();
- return result;
- }
复制代码 假设主线程来运行上面耗时操纵
- public class MainActivity extends AppCompatActivity{
- private TextView tvContent;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- tvContent = findViewById(R.id.tv_content);
- }
- public void start(View view){
- //做一个耗时任务
- Thread thread = new Thread(new Runnable(){
- @Override
- public void run(){
- String stringFormNet = getStringFormNet();
- tvContent.setText(stringFormNet();
- }
- });
- thread.start();
- Toast.makeText(this,"任务完成!",Toast.LENGTH_SHORT).show();
- }
-
- private String getStringFormNet(){
- //假设从网络获取了字符串
- String result = ''
- StringBulider stringBulider = new StringBulider();
- //模拟一个耗时操作
- for(int i=0,i<100,i++){
- stringBulider.append("字符串"+i)
- }
- try{
- //此处休眠5s
- Thread.sleep(5000):
- }
- catch(InterruptedException e){
- e.printStackTrace();
- }
- result = stringBulider.toString();
- return result;
- }
- }
复制代码 运行结果,直接显示"任务完成!"然后退出历程,说明主历程无法直接运行耗时操纵!
IOS
在iOS和macOS开发中,处置惩罚并发和多线程是常见的需求,以提高应用步伐的性能和响应性。Pthreads、NSThread、GCD(Grand Central Dispatch)、NSOperation 和 NSOperationQueue 是几种常用的技能和框架,它们各有特点和适用场景。
1. Pthreads
Pthreads 是POSIX线程(Portable Operating System Interface for uniX threads)的缩写,是C语言标准的一部分,用于提供线程、互斥锁、条件变量等线程同步功能。固然它功能强盛,但因为是C语言级别的API,所以在Objective-C或Swift中利用时大概会感觉比力底层和繁琐,且需要手动管理线程的生命周期和同步问题。
2. NSThread
NSThread 是Cocoa框架提供的一个轻量级的线程类,它封装了POSIX线程(Pthreads)的功能,并提供了面向对象的接口。利用NSThread可以更方便地创建、启动、暂停、规复和停止线程。然而,和直接利用Pthreads一样,NSThread也需要开发者手动管理线程的生命周期和同步问题,这大概会导致代码变得复杂且难以维护。
3. GCD
GCD(Grand Central Dispatch)是Apple推出的一种高效的并发编程工具,它答应开发者将任务分配到多个核心上并行实行,而无需创建和管理线程。GCD会主动管理线程的生命周期和同步问题,大大简化了并发编程的复杂度。GCD利用队列(Queues)和任务(Blocks或Functions)来管理并发任务,开发者可以通过将任务添加到差别的队列(串行队列、并发队列、主队列等)来控制任务的实行顺序和优先级。
4. NSOperation & NSOperationQueue
NSOperation 和 NSOperationQueue 是基于GCD的更高级别的并发编程框架,它们提供了面向对象的并发编程接口。NSOperation 是一个抽象类,代表了一个将要实行的任务。开发者可以通过继续NSOperation类并重写其main方法来定义任务的具体实行内容。NSOperationQueue则负责管理NSOperation对象的队列,包罗任务的添加、取消、实行顺序和优先级等。与GCD相比,NSOperation和NSOperationQueue提供了更丰富的功能,如任务依靠、取消操纵等,使得并发编程更加灵活和强盛。
泉源
Android 线程有哪些 简述android线程
iOS线程知识整理
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |