下面两段代码都在主线程中运行,我们在看别人代码时会发现有时会直接调用,有时会利用performSelector调用,今天看到有人在问这个问题,我便做一下总结,[delegate imageDownloader:self didFinishWithImage:image];
 
[delegate performSelector:@selector(imageDownloader:didFinish            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-19 22:18:51
                            
                                9阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            performSelector具体的创建方式有10种,根据执行方式分为了五大类。//1️⃣三种 这三种跟直接调用方法没有区别,同步执行任务,阻塞当前线程。执行完sel再继续执行原来任务
[self performSelector:sel];
[self performSelector:sel withObject:nil];
[self performSelector:sel withObject            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-11 07:39:48
                            
                                146阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            iOS 上不建议在非主线程进行UI操作,在非主线程进行UI操作有很大几率会导致程序崩溃,或者出现预期之外的效果。我开始不知道这一点,在子线程中进行了弹窗操作,结果程序就出问题了!报的错误是(EXC_BAD_ACCESS(code=2,address=0xcc),0x1a0ad32: movl 204(%ecx), %edx ),我以为是空指针导致的内存泄露,用了很多方法,但这问题感觉很顽            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-12 20:24:49
                            
                                395阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、sleep方法、yield方法、join方法运行结果:(1)sleep方法: 使线程暂停运行,并交出CPU,无需notify、notifyAll唤醒,等睡眠时间期满,就会“醒来”,不过这时该线程不一定拥有CPU,只有正在执行的线程停止运行,或者刚醒来的这个线程具有更高的优先级时,才会继续执行。 以下代码可说明这个问题:public class MyThread implements Runna            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-10 21:45:31
                            
                                95阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、开线程在iOS开发过程中,经常会遇到在服务器端获取完数据通过后台使用多线程方式自动更新UI,通常的做法有两种:1、使用NSObject类的方法performSelectorInBackground:withObject:来创建一个线程。 具体的代码:[Object performSelectorInBackground:@selector(doSomething:) withObject:n            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-08 21:01:46
                            
                                311阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # iOS创建子线程执行网络请求
在iOS开发中,我们通常会在主线程中执行UI操作,而将耗时操作放在子线程中执行,以避免阻塞主线程,提高用户体验。当涉及到网络请求时,更需要将网络请求放在子线程中执行,以免网络请求造成主线程阻塞,导致界面卡顿。本文将介绍如何在iOS中创建子线程执行网络请求的方法。
## 使用GCD创建子线程
在iOS开发中,我们通常使用Grand Central Dispat            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-03-01 07:35:53
                            
                                63阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # iOS 创建子线程执行任务的完全指南
在iOS开发中,创建子线程来执行任务是一项非常重要的技能。无论是为了提升应用的性能,还是为了保持用户界面的流畅,使用子线程都是必不可少的。本文将详细指导你如何在iOS中创建和使用子线程。
## 创建子线程的流程
以下是实现这一功能的步骤:
| 步骤 | 描述                           |
|------|---------            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-09-11 03:26:38
                            
                                128阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            AutoReleasePool是oc的一种自动内存回收机制,可以将一些临时变量通过自动释放池来回收统一释放在没有手加Autorelease Pool的情况下,Autorelease对象是在当前的runloop迭代结束时释放的,而它能够释放的原因是系统在每个runloop迭代中都加入了自动释放池Push和Pop自动释放池本事销毁的时候,池子里面所有的对象都会做一次release操作 用法对            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2022-08-02 20:34:00
                            
                                433阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # iOS 子线程执行代码让主线程等待
在iOS开发中,常常会涉及到多线程的操作。由于主线程负责更新UI操作,长时间的计算会导致界面卡顿。因此,合理地使用子线程来执行耗时的操作,并在必要时让主线程等待,是开发中一个重要的技术点。本文将对此进行详细说明,并提供代码示例,帮助开发者更好地理解这一过程。
## 前言
在iOS中,主线程也被称为UI线程,负责处理用户交互和更新界面。当我们需要进行网络            
                
         
            
            
            
            最近遇到一个问题,使用slf4j和log4j2日志框架时,需要将请求的id放入到打印日志中。因为MDC和ThreadContext是跟线程绑定的,所以遇到了子线程无法读取父线程MDC和ThreadContext的问题,网上搜了很多,有各种各样的答案,折腾了一天,总算搞定了,今天花点时间把答案总结梳理一下,希望大家能少走弯路。问题现象:在父线程中使用了MDC.put("key","value")或者            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-26 22:14:39
                            
                                155阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1 HandlerThread1.1 定义  HandlerThread是能够新建拥有Looper的Thread,这个Looper能够用来新建其他的Handler。HandlerThread本质是一个线程,在线程内部,代码是串行处理的。(线程中的Looper)需要注意的是,新建的时候需要被回调。1.2 特点(1) HandlerThread将loop转到子线程中处理,目的就是分担MainLoope            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-27 10:09:41
                            
                                63阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            autorelase的本质就是延迟调用release方法NSThread和NSOperationQueue开辟子线程需要手动创建autoreleasepool,GCD开辟子线程不需要手动创建autoreleasepool,因为GCD的每个队列都会自行创建autoreleasepool用@autoreleasepool是有用的。 正常情况下,你创建的变量会在超出其作用域的时候被释放掉。 而如果你的函            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-16 14:54:19
                            
                                162阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 实现Swift执行子线程的步骤
## 概述
在iOS开发中,如果想要在后台执行一些耗时的任务或者避免主线程阻塞,我们需要使用多线程来实现。在Swift中,我们可以使用GCD(Grand Central Dispatch)来实现多线程编程。GCD是苹果提供的一个用于并发编程的技术,它可以方便地实现任务的异步执行和线程的调度。
本文将向你介绍如何使用Swift和GCD来执行子线程任务,并提供详            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-10-31 15:23:02
                            
                                255阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Swift 子线程执行的完整指南
在开发过程中,我们常常会遇到需要在后台执行耗时任务的情况,比如网络请求、数据处理等。这种情况下,我们需要将这些任务放在子线程中,以免阻塞主线程,从而影响用户体验。本文将为你详细讲解如何在Swift中实现子线程执行。
## 任务流程概述
下面是关于使用Swift实现子线程执行的步骤:
| 步骤 | 描述                       |
|            
                
         
            
            
            
            observeOn还是先说observeOn,直接看源码:public ObservableObserveOn(ObservableSource<T> source, Scheduler scheduler, boolean delayError, int bufferSize) {
        super(source);
        this.scheduler = sch            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-30 19:31:01
                            
                                35阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在Java中,多线程编程是一种常见的编程方式,可以有效地提高程序的运行效率和性能。在多线程编程中,主线程和子线程之间的执行顺序是一个常见的问题。本文将介绍如何在Java中实现主线程等待子线程执行完毕后再继续执行的方法。
在Java中,可以通过Thread类或者实现Runnable接口来创建线程。当创建一个子线程后,主线程和子线程的执行是并发的,即它们可以同时运行。如果需要主线程等待子线程执行完毕            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-06-29 04:39:25
                            
                                30阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            鄙人在多线程开发过程中遇到一个问题:代码中的子线程需要在循环中不断操作UI线程,但是在关闭UI窗口时,却提示“无法访问已释放的对象”。为了重现这个问题,本文使用多线程实现了一个简易的“小时钟”,时钟能够动态地显示当前的系统时间,时间更新间隔为1s。当然,我们完全可以使用Timer来实现这样一个“小时钟”,但是为了说明问题,我就勉强的使用多线程吧,就算有点“小题大做”之嫌,也请大家将就一下。程序的运            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-01 16:12:16
                            
                                157阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一:RunLoop的简单介绍          #import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
/**
 *  1:Runloop和线程的关系:1:一一对应,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-03 12:56:54
                            
                                28阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一 python与线程 1.全局解释器锁GIL(用一下threading模块之后再来看~~)  2.python线程模块的选择 二 Threading模块 1.线程创建  2.多线程与多进程  3.多线程实现socket 4.Thread类的其他方法 join方法:  5.守护线程 三 锁 1.GIL锁(Global Interpreter Lock) 2.同步锁 GIL VS Lock  GIL            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-24 08:49:40
                            
                                254阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            线程进程: 一个正在运行的程序 就是一个进程线程: 一个进程中有很多个线程,每一个线程相当于一个执行的任务开启一个线程,相当于开启了一个CPU的执行路径(相对独立)CPU在执行多个线程时 是随机的 跟线程的优先级有关分时调度---CPU会在对个线程中进行随机切换主线程多线程的程序,出了主线程外,一般都是子线程一个程序只有一个主线程main函数 就是一个线程,并且是主线程主线程的执行过程JVM调用m            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-19 10:24:36
                            
                                152阅读
                            
                                                                             
                 
                
                                
                    