【移动端】安卓、IOS线程分类

安卓

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开发中,处理并发和多线程是常见的需求,以提高应用程序的性能和响应性。PthreadsNSThreadGCD(Grand Central Dispatch)、NSOperationNSOperationQueue 是几种常用的技术和框架,它们各有特点和适用场景。

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

NSOperationNSOperationQueue 是基于GCD的更高级别的并发编程框架,它们提供了面向对象的并发编程接口。NSOperation 是一个抽象类,代表了一个将要执行的任务。开发者可以通过继承NSOperation类并重写其main方法来定义任务的具体执行内容。NSOperationQueue则负责管理NSOperation对象的队列,包括任务的添加、取消、执行顺序和优先级等。与GCD相比,NSOperationNSOperationQueue提供了更丰富的功能,如任务依赖、取消操作等,使得并发编程更加灵活和强大。

来源

Android 线程有哪些 简述android线程
iOS线程知识整理

  • 39
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软泡芙

给爷鞠躬!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值