多线程
来源:互联网 发布:淘宝壹心表行全是好评 编辑:程序博客网 时间:2024/05/29 08:39
1.并发的多面性
并发解决的问题大致可以分为两种:
1)速度问题
- 并发是用于多处处理器编程的基本工具。
- 并发通常是提高运行在单处理器上的程序的性能。
2)设计可管理性
- 解决这个问题可以使用协作多线程。
- JAVA的线程机制是抢占式的,这表示了调度机制会周期性的中断线程,将上下文切换到另外一个线程,从而为每个线程都提供时间片,使得每个线程都会分配到数量合理的时间去驱动它的任务。在协作式的系统中,每个任务都会自动的放弃控制,这就要求程序员要有意识的在每个任务重插入某种类型的让步语句。协作式系统的优势是双重的:上下文切换的开销通常比抢占式系统要低廉的多,并且可以同时执行的线程的数量在理论上没有任何的限制。
2.基本线程的机制
并发编程可以使的我们可以将程序划分为多个分离的,独立运行的任务,通过使用多线程机制,这些独立的任务重的每一个都将有执行线程来驱动。一个线程就是在进程中的一个单一的顺序控制流,因此,单个进程可以拥有多个并发执行的任务。其底层是切分CPU的时间。
3.如何创建线程
1)继承Thread类,并重写run()方法
2)实现Runnable接口,并重写run()方法
4.线程中的一些方法
1)start():开启一个线程
2)sleep():是Thread类下的一个静态方法,可以带参数,调用它可以使得任务中止执行给定的时间。
3)setPriority():设置线程的优先级
4)getPriority():得到线程的优先级
5)setDaemon():把它设置为一个后台线程
6)isDaemon():确定线程是否是一个后台线程,如果是 一个后台线程,那么它创建的任何线程将被自动设置为后台线程。
7)join():等待一段时间直到第二个线程结束才执行。如果某个线程在另一个线程t上调用t.join(),次线程将被挂起,直到目标线程t结束才可以恢复。这个方法也可以带上一个超时参数,如果目标线程在这段时间到期时还没有结束的话,join()方法总能返回。对join()方法的调用也可以中断,做法是在调用线程上调用interrupt()方法,此时需要使用到try-catch语句
4.线程的优先级
1)在绝大多数的时间里线程都是以默认的优先级进行执行。
2)MAX_PRIORITY,NORM_PRIORITY,MIN_PRIORITY,
5.后台线程
是指在程序运行的时候在后台提供的一种通用的服务线程,并且这种线程不属于程序中不可或缺的部分。因此,当所有的非后台线程结束时,程序也就终止了,同时还会杀死进程中的所有后台线程。反过来说的话就是只要有任何非后台的线程还在运行,程序也就不会终止。
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 点击文字弹出照片
- 初探Node.js
- iOS 点击跳转AppleStore
- Test-03
- 一个div在另外一个div中水平垂直居中
- 多线程
- How Did Watson Answer? —— Search & Candidate Generation
- [Cocoa]_[初级]_[如何复制NSView]
- LEETCODE--Minimum Depth of Binary Tree
- 打包过程vs2010(包含卸载功能、生成一个exe文件)
- 批处理查找方件中的关键词
- C++primer第五版第九章学习笔记
- extView设置跑马灯形式不动
- mysql提高查询速度