多线程复习笔记

1. 多线程是什么?    

    线程就是程序中单独顺序的流控制。线程本身不能运行,它只能用于程序中。多线程则指的是在单个程序中可以同时运行多个不同的线程执行不同的任务。

2. 为什么使用多线程?

多线程编程的目的,就是"最大限度地利用CPU资源",当某一线程的处理不需要占用CPU,而只和I/O等资源打交道时,让需要占用CPU资源的其它线程有机会获得CPU资源。

3. 线程与进程有什么不同?

1). 资源是否独立:多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响。线程本身的数据通常只有寄存器数据,以及一个程序执行时使用 的堆栈,

所以线程的切换比进程切换的负担要小。

    2). 切换成本:多线程程序比多进程程序需要更少的管理费用。进程是重量级的任务,需要分配给它们独立的地址空间。进程间通信是昂贵和受限的。进程间的转换也是很需要花费的。另一方面,线程是

轻量级的选手。它们共享相同的地址空间并且共同分享同一个进程。线程间通信是便宜的,线程间的转换也是低成本的。

4. 骨架

    Thread 类也实现了 Runnable 接口,实现了 Runnable 接口中的 run 方法

5. 多线程怎么用?

1). 线程的实现有两种方式,第一种方式是继承 Thread 类,然后重写 run 方法;第二种是实现 Runnable 接口,然后实现其 run 方法。

2). 将我们希望线程执行的代码放到 run 方法中,然后通过 start 方法来启动线程,start方法首先为线程的执行准备好系统资源,然后再去调用run方法。当某个类继承了Thread 类之后,该类就叫做一个线程类。

6. 使用注意事项

    1). 多线程的数量应根据CPU核数以及IO操作的频繁程度而定。并不是线程越多,效率越高。

2). 停止线程的方式:不能使用 Thread 类的 stop 方法来终止线程的执行。 一般要设定一个变量,在 run 方法中是一个循环,循环每次检查该变量,如果满足条件则继续执行,否则跳出循环,线程结束。

7. 优化

1). 推荐自定义线程名称

8. 监控

时间: 2024-10-18 19:40:44

多线程复习笔记的相关文章

Java基础复习笔记系列 八 多线程编程

Java基础复习笔记系列之 多线程编程 1. 2.

[Java基础] Java线程复习笔记

先说说线程和进程,现代操作系统几乎无一例外地采用进程的概念,进程之间基本上可以认为是相互独立的,共享的资源非常少.线程可以认为是轻量级的进 程,充分地利用线程可以使得同一个进程中执行多种任务.Java是第一个在语言层面就支持线程操作的主流编程语言.和进程类似,线程也是各自独立的,有自 己的栈,自己的局部变量,自己的程序执行并行路径,但线程的独立性又没有进程那么强,它们共享内存,文件资源,以及其他进程层面的状态等.同一个进程内的 多个线程共享同样的内存空间,这也就意味着这些线程可以访问同样的变量和

安卓开发复习笔记——Fragment+FragmentTabHost组件(实现新浪微博底部菜单)

记得之前写过2篇关于底部菜单的实现,由于使用的是过时的TabHost类,虽然一样可以实现我们想要的效果,但作为学习,还是需要来了解下这个新引入类FragmentTabHost 之前2篇文章的链接: 安卓开发复习笔记——TabHost组件(一)(实现底部菜单导航) 安卓开发复习笔记——TabHost组件(二)(实现底部菜单导航) 关于Fragment类在之前的安卓开发复习笔记——Fragment+ViewPager组件(高仿微信界面)也介绍过,这里就不再重复阐述了. 国际惯例,先来张效果图: 下面

计算机图形学 复习笔记

计算机图形学 复习笔记 (个人整理,仅做复习用 :D,转载注明出处:http://blog.csdn.net/hcbbt/article/details/42779341) 第一章 计算机图形学综述 研究内容 图形的概念:计算机图形学的研究对象 能在人的视觉系统中产生视觉印象的客观对象 包括自然景物.拍摄到的图片.用数学方法描述的图形等等 图形的要素 几何要素:刻画对象的轮廓.形状等 非几何要素:刻画对象的颜色.材质等 图形表示法 点阵表示 枚举出图形中所有的点,简称为图像. 参数表示 由图形的

安卓开发复习笔记——Fragment+ViewPager组件(高仿微信界面)

什么是ViewPager? 关于ViewPager的介绍和使用,在之前我写过一篇相关的文章<安卓开发复习笔记——ViewPager组件(仿微信引导界面)>,不清楚的朋友可以看看,这里就不再重复. 什么是Fragment? Fragment是Android3.0后新增的概念,Fragment名为碎片,不过却和Activity十分相似,具有自己的生命周期,它是用来描述一些行为或一部分用户界面在一个Activity中,我们可以合并多个Fragment在一个单独的activity中建立多个UI面板,或

安卓开发复习笔记——WebView组件

我们专业方向本是JAVA Web,这学期突然来了个手机App开发的课设,对于安卓这块,之前自学过一段时间,有些东西太久没用已经淡忘了 准备随笔记录些复习笔记,也当做温故知新吧~ 1.什么是WebView? WebView(网络视图)能加载显示网页,可以将其视为一个浏览器,它使用了WebKit渲染引擎加载显示网页. 废话不多说,直接上代码 1.需要在xml布局文件中声明WebView组件 1 <WebView 2 android:id="@+id/webview" 3 androi

多线程编程笔记

多线程的问题 在多线程应用中,子线程一定会修改某些公共资源(包括全局变量.磁盘文件等),这样很有可能会影响其它子线程.由于不同线程是并行执行的,有可能某个时刻某个线程对公共资源进行了部分修改,此时公共资源是无效的,CPU 切换到另一个线程执行并访问此公共资源,这样将有可能造成巨大灾难. 要解决此问题,就应该使需要相同公共资源的不同线程不能同时执行,所以多线程问题分析的基础是互斥. 线程同步和线程互斥 线程间的关系可以分为无关和相交两种.当多个线程无关的时候,其中某个线程的启动不会依赖于另一个线程

oracle从入门到精通复习笔记续集之PL/SQL(轻量版)

复习内容: PL/SQL的基本语法.记录类型.流程控制.游标的使用. 异常处理机制.存储函数/存储过程.触发器. 为方便大家跟着我的笔记练习,为此提供数据库表文件给大家下载:点我下载 为了要有输出的结果,在写PL/SQL程序前都在先运行这一句:set serveroutput on结构:declare--声明变量.类型.游标begin--程序的执行部分(类似于java里的main()方法)exception--针对begin块中出现的异常,提供处理的机制--when...then...--whe

IOS开发复习笔记(3)-ARC

1.ARC 当你自己调用了release或retain语句的时候,ARC有效时编译文件会遇到错误,你可以通过-fno-objc-arc和-fobjc-arc两个编译器标志在混搭中支持ARC和非ARC的代码 如下面编译支持ARC,而文件代码不支持ARC # if !__has_feature(objc_arc) //this code do not support to ARC -(void) release{ //release your var } #endif 在ARC工程中集成非ARC的第