线程1-单线程

单线程

//1.获取当前线程
    NSThread *current=[NSThread currentThread];

//2.使用for循环执行一些耗时操作
    for (int i=0; i<10; i++) {
        //3.输出线程
        NSLog(@"btnClick---i=%d---%@",i,current);
        for (int j=0; j<10; j++) {
            NSLog(@"j=%d",j);
        }
    }
时间: 2024-08-26 21:31:06

线程1-单线程的相关文章

Operating System-Thread(5)弹出式线程&amp;&amp;使单线程代码多线程化会产生那些问题

本文主要内容 弹出式线程(Pop-up threads) 使单线程代码多线程化会产生那些问题 一.弹出式线程(Pop-up threads) 以在一个http到达之后一个Service的处理为例子来介绍弹出式线程. 上面的例子中传统的做法有可能是在Service中有一个线程一直在等待request的到达,等request到达后这个线程会开始检查请求最后在进行处理.当这个线程在处理request的时候,后面来的request会被block,一直到线程处理完当前request为止.如下图所示. 弹出

C# 线程--第一单线程基础

概念 什么是进程? 当一个程序被打开运行时,它就是一个进程.在进程中包括线程,进程可以由一个或多个线程组成. 什么是线程? 线程是程序执行流的最小单元.一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成. 什么是多线程? 多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务. 个人总结 在C#中我们开启一个应用程序就是打开了一个进程,这个进程中包括一个主线程.我们可以在此基础上在增加

java随手笔记之九之IO和线程

IO:进行数据的读写操作. 输入流:源头---->应用程序,read 输出流:应用程序(源头)--->目的地,write 字节流: InputStream,OutputStream 字符流: Reader,Writer read: 1.创建输入流对象,与要读取文件相关联 2.读取文件内容 3.关闭流 write: 1.创建输出流对象,与要写入数据的文件相关联 2.将数据写入到文件 3.关闭流 字符包装流对象: BufferdReader:String readLine(),null Buffe

CPU的最小执行单位是线程,协程不需要qt支持...直接用现成的协程库就行了

协程也就在I/O操作上才有优势,Qt事件循环,本事很多I/O已经是异步了,利用好异步(虽然都说异步有点反人类思维).因为CPU的执行最小单位是线程,协程也只是在其之上又调度而已. 我的意思是利用好异步的优势.协程是程序级别的调度,对于CPU执行来说,没任何优势的. CPU的最小执行单位是线程,单线程里十万个协程,也就一个在工作,利用不了并行优势.对于高运算的程序,协程除了增加调度开销并没有优势的.对于I/O操作较多的程序才有用,因为I/O太慢.而对应I/O操作,异步相对与协程开销更小,效率也更高

JAVA线程池中队列与池大小的关系

JAVA线程中对于线程池(ThreadPoolExecutor)中队列,池大小,核心线程的关系写出自己的理解: 1:核心线程:简单来讲就是线程池中能否允许同时并发运行的线程的数量 2:线程池大小:线程池中最多能够容纳的线程的数量. 3:队列:对提交过来的任务的处理模式. 对于线程池与队列的交互有个原则: 如果队列发过来的任务,发现线程池中正在运行的线程的数量小于核心线程,则立即创建新的线程,无需进入队列等待.如果正在运行的线程等于或者大于核心线程,则必须参考提交的任务能否加入队列中去. 1:提交

关于线程的整理

线程的生命周期:新建.就绪.运行.阻塞.死亡. 一个线程调用了start()方法后,就由新建态到就绪态,在就绪态抢占到CPU的执行权就进入运行态,在运行态时被别的线程抢走cup的执行权,会重新进入就绪态.在运行态调用了sleep或wait方法,则会进入阻塞态.从阻塞态由于sleep时间到或者被唤醒,则会在此进入就绪态.在运行态如果run结束,或者被中断,则会进入死亡态.在死亡态,对象会等待垃圾回收站回收. 线程与进程的区别: 线程是一个执行单元,进程是一段正在执行的代码,一个进程至少包含一个线程

JAVA 并发编程-线程池(七)

线程池的作用: 线程池作用就是限制系统中运行线程的数量. 依据系统的环境情况.能够自己主动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控制线程数量,其它线程排队等候.一个任务运行完毕,再从队列的中取最前面的任务開始运行. 为什么要用线程池: 1.降低了创建和销毁线程的次数,每一个工作线程都能够被反复利用.可运行多个任务. 2.能够依据系统的承受能力,调整线程池中工作线线程的数目,防止由于消耗过多的内存,而把server累趴下 Java里面线程池的

进程、线程、同步、异步

研究了解了一下这几个概念性问题: 进程.线程: 进程相当于一个软件,线程是这个软件中的某一段程序. 同时打开运行多个软件时就是多进程, 一个软件中可以同时执行多个功能就是多线程. 理论区别: 进程是程序的一次执行,线程可以理解为进程中执行的一个程序片段. 进程间是相互独立的,表现在内存空间,上下文环境,线程运行在进程空间内. 一般来将(不采用特殊技术)进程无法突破进程边界获取其他进程的存储空间,而线程由于处于同一进程空间内,所以同一进程所产生的线程可以共享同一存储空间. 同一进程中两段代码不能同

android线程控制UI更新(Handler 、post()、postDelayed()、postAtTime)

按照下面的理解就是handler与ui线程有一定的关联可以因为更新界面只能在主线程中所有更新界面的地方可以在接受消息的handleMessage那里还有更新界面可以在handler.port(new Runnable))在自定义的线程中然后执行post方法通知主线程去更新这个界面 下面是参考: Android 线程是单线程的. 所以更新UI要用到Handler: private Handler splashHandler = new Handler() {public void handleMe

MySQL后台线程的清理工作

后台清理工作:脏页刷盘.undo回收 1.page cleaner thread:刷新脏页 2.purge thread:清空undo页.清理"deleted"page 一.innodb_page_cleaners page cleaner线程从buffer pool中刷脏页的线程数量. 1.5.7新特性 1.5.6版本以前,脏页的清理工作交由master线程的: 2.Page cleaner thread是5.6.2引入的一个新线程(单线程),从master线程中卸下buffer p