ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【移动端】安卓、IOS线程分类 [打印本页]

作者: 水军大提督    时间: 2024-9-15 07:28
标题: 【移动端】安卓、IOS线程分类
安卓

Android中的多线程主要分为两类:主线程与子线程

两个原则(同样适用于ios):

步伐例子,写一个耗时操纵,假设从网络获取了字符串
  1. private String getStringFormNet(){
  2.         //假设从网络获取了字符串
  3.         String result = ''
  4.         StringBulider stringBulider = new StringBulider();
  5.         //模拟一个耗时操作
  6.         for(int i=0,i<100,i++){
  7.                 stringBulider.append("字符串"+i)
  8.         }
  9.         try{
  10.                 //此处休眠5s
  11.                 Thread.sleep(5000):
  12.                 }
  13.         catch(InterruptedException e){
  14.                 e.printStackTrace();
  15.                 }
  16.         result = stringBulider.toString();
  17.         return result;
  18. }
复制代码
假设主线程来运行上面耗时操纵
  1. public class MainActivity extends AppCompatActivity{
  2.         private TextView tvContent;
  3.         @Override
  4.         protected void onCreate(Bundle savedInstanceState) {
  5.         super.onCreate(savedInstanceState);
  6.         setContentView(R.layout.activity_main);
  7.         tvContent = findViewById(R.id.tv_content);
  8.     }
  9.     public void start(View view){
  10.             //做一个耗时任务
  11.             Thread thread = new Thread(new Runnable(){
  12.                     @Override
  13.                     public void run(){
  14.                             String stringFormNet = getStringFormNet();
  15.                             tvContent.setText(stringFormNet();
  16.                             }
  17.                     });
  18.                     thread.start();
  19.                     Toast.makeText(this,"任务完成!",Toast.LENGTH_SHORT).show();
  20.                     }
  21.                    
  22.     private String getStringFormNet(){
  23.                 //假设从网络获取了字符串
  24.                 String result = ''
  25.                 StringBulider stringBulider = new StringBulider();
  26.                 //模拟一个耗时操作
  27.                 for(int i=0,i<100,i++){
  28.                         stringBulider.append("字符串"+i)
  29.                 }
  30.                 try{
  31.                         //此处休眠5s
  32.                         Thread.sleep(5000):
  33.                         }
  34.                 catch(InterruptedException e){
  35.                         e.printStackTrace();
  36.                         }
  37.                 result = stringBulider.toString();
  38.                 return result;
  39.         }
  40. }
复制代码
运行结果,直接显示"任务完成!"然后退出历程,说明主历程无法直接运行耗时操纵!
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企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4