上一篇博客 Android-Java-进程与线程,简述了进程与线程,如果先知道多线程必须要懂得CPU相关的知识;

CPU:CPU最小的控制单元是线程

CPU:看起来是同时执行多个进程,实际上是CPU在做着非常非常快速的切换,导致我们肉眼看到是同时运行的,实际上单核CPU是不可能同时执行多个线程的


单核CPU

  单核CPU只有一个核心运算机制,所以CPU处理多个进程中的多个线程,是做这非常非常快速的切换


多核CPU:

为了解决CPU同时执行两个线程,才有了双核CPU的出现,同时执行两个线程这样效率提高了很多

为了解决CPU同时执行四个线程,才有了四核CPU的出现,同时执行四个线程这样效率提高了很多很多

双核CPU:

  注意:⚠️ 实际硬件中,只有一个CPU处理器,此CPU处理器是双核的,以下图是为了截取动态图片方便


多线程的利与弊:

优点:

在开发过程中使用多线程可以让用户提高更加好,(全盘扫描,智能杀毒,垃圾清理,系统优化)四个线程开启运行中,CPU非常非常快速的切换,用户看起来是四个功能同时在运行

  

缺点:合理开启线程才是多线程的明智之选

  例如:我这个CPU跑四个线程没有问题,  一旦让CPU去跑40个线程,就给CPU造成负担了,CPU也处理不过来,这样的多线程效率极低;

Android-Java-多线程的更多相关文章

  1. Android java 多线程(三)

  2. java多线程以及Android多线程

    Java 多线程 线程和进程的区别 线程和进程的本质:由CPU进行调度的并发式执行任务,多个任务被快速轮换执行,使得宏观上具有多个线程或者进程同时执行的效果. 进程:在操作系统来说,一个运行的程序或者 ...

  3. 关于JAVA多线程的那些事__初心者

    前言 其实事情的经过也许会复杂了点,这事还得从两个月前开始说.那天,我果断不干IT支援.那天,我立志要做一个真正的程序猿.那天,我26岁11个月.那天,我开始看Android.那天,我一边叨念着有朋自 ...

  4. 13、Android的多线程与异步任务

    课程目标:学习Android中异步操作的三大方式 重点难点:Handler与线程的关系   Handler消息队列的实现 考核目标: 使用Handler是异步的,它会建立新线程么? no Handle ...

  5. Java多线程学习笔记--生产消费者模式

    实际开发中,我们经常会接触到生产消费者模型,如:Android的Looper相应handler处理UI操作,Socket通信的响应过程.数据缓冲区在文件读写应用等.强大的模型框架,鉴于本人水平有限目前 ...

  6. Java多线程面试题整理

    部分一:多线程部分: 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速. ...

  7. 第十节:详细讲解一下Java多线程,随机文件

    前言 大家好,给大家带来第十节:详细讲解一下Java多线程,随机文件的概述,希望你们喜欢 多线程的概念 线程的生命周期 多线程程序的设计 多线程的概念 多线程的概念:程序是静态的,进程是动态的.多进程 ...

  8. [Android] Java Basic : preview

    基础教学:lecture, video, lecturer: Matt Stoker Java教学:http://www.runoob.com/java/java-intro.html[菜鸟教程,非常 ...

  9. Android网络多线程断点续传下载

    本示例介绍在Android平台下通过HTTP协议实现断点续传下载. 我们编写的是Andorid的HTTP协议多线程断点下载应用程序.直接使用单线程下载HTTP文件对我们来说是一件非常简单的事.那么,多 ...

  10. Java多线程编程:Callable、Future和FutureTask浅析(多线程编程之四)

    java多线程-概念&创建启动&中断&守护线程&优先级&线程状态(多线程编程之一)java多线程同步以及线程间通信详解&消费者生产者模式&死锁& ...

随机推荐

  1. Autopilot Pattern Redis

    https://github.com/autopilotpattern/redis Architecture 正在运行的群集包括以下组件: Redis :我们使用的是Redis 3.2. Redis ...

  2. 安装Anaconda以及jupyter的使用

    1)下载https://www.anaconda.com/download/ 2)安装 3)终端查看(Anaconda Prompt) 4)升级所有的包 初次安装下的软件包版本一般都比较老旧,因此提前 ...

  3. bedtools简介及应用

    1)背景处理基因组数据中,比较基因组不同区域,例如寻找overlap等,是一种基本的且常见的问题.虽然UCSC 中‘Table Browser’或者Galaxy可以用来处理,但是当这些工具面对大的数据 ...

  4. 使用sizemask来确保索引不越界

    [使用sizemask来确保索引不越界] 在redis的字典实现中,有一个sizemask字段. 此字段的作用是当使用下标访问数据时,确保下标不越界. 如当前size为8时,sizemask为7(0x ...

  5. 双活部署前收集EMC存储设备信息

    以0.68服务器为例 1.拷贝emcgrab_Linux_v4.7.10.tar到linux服务器并将其解压到/tmp目录下 tar -xvf emcgrab_Linux_v4.7.10.tar -C ...

  6. mogodb查询

    Find: {$and: [ {"MethodName":"CommLogin"} ,{"CreateTime":{$gte:"2 ...

  7. python使用外部PY文件的变量

    在用python和selenium编写登录等脚本时,一直都是给用户名和密码直接赋值.但是考虑到这样不便于管理,而且可能多个地方用到同一个变量,所以想把变量放在一个单独的文件中进行管理. 以登录脚本为例 ...

  8. 转)MySQL日期与时间函数

    -- MySQL日期时间处理函数 -- 当前日期:2017-05-12(突然发现今天512,是不是会拉防空警报) SELECT NOW() FROM DUAL;-- 当前日期时间:2017-05-12 ...

  9. python之用户登陆作业

    实现一个用户登陆的小程序,如果密码错误,可以重试三次,如果三次均错误,则锁定 数据库如下格式,分别用户名|密码|锁定,其中锁定字段0为正常,1为被锁定 root|admin123|0 admin|ad ...

  10. ImageView小技巧

    ImageView截取图片的方式 centerCrop:以中心点为基准 将图片的最短边与ImageView宽度匹配 其他部分裁掉centerInside: 以中心点为基准 将图片最长边 缩进控件去