- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
07Java线程
1
Java 多线程
ZUST Software Institute
2
Java线程
概述
线程的创建
两种方式
线程的同步
synchronized
wait()/notifyAll()/notify()
线程的生命周期
程序、进程和线程
程序是计算机指令的集合,它以文件的形式存储在磁盘上。
进程:是一个程序在其自身的地址空间中的一次执行活动。
进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源;而程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占用系统的运行资源。
线程:是进程中的一个单一的连续控制流程。一个进程可以拥有多个线程。
线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。
单线程程序与多线程程序
单线程程序
多线程程序
一个线程
两个线程
5
概述
进程(Process)
程序(Program)的一次动态执行过程, 占用特定的地址空间
在某种程度上相互隔离的、独立运行的程序
多任务(Multitasking)操作系统将CPU时间动态地划分给每个进程,操作系统同时执行多个进程,每个进程独立运行
进程的查看
Windows系统: Ctrl+Alt+Del
Unix系统: ps or top
6
概述
线程(Thread)
线程是进程中一个“单一的连续控制流程” (a single sequential flow of control)/执行路径
一个进程可拥有多个并行的(concurrent)线程
一个进程中的线程共享相同的内存单元/内存地址空间可以访问相同的变量和对象,而且它们从同一堆中分配对象通信、数据交换、同步操作
轻量级进程(lightweight process)
7
概述
Java语言中的线程
大多数现代的操作系统都支持线程
第一个在语言本身中显性地包含线程的主流编程语言,它没有把线程化看作是底层操作系统的工具
每个 Java 程序都至少有一个线程—主线程
当一个 Java 程序启动时,JVM 会创建主线程,并在该线程中调用程序的main()方法
JVM还创建了其它线程,如垃圾收集(garbage collection)
8
概述
多线程(MultiThreading)语言
java.lang.Thread类
java.lang.Runnable接口
为什么? (用途)
Client/Server设计中的服务器端, 如每个用户请求建立一个线程
图形用户界面(GUI)的设计中提高事件响应的灵敏度
从提高程序执行效率的考虑
利用多处理器系统
执行异步或后台处理等
9
初探线程
public class SimpleThread extends Thread {
public SimpleThread(String str) {
super(str);
}
public void run() {
System.out.println(getName()+“线程开始!);
for (int i = 0; i 8; i++) {
System.out.println(i + + getName());
try {
sleep((long)(Math.random() * 1000));
} catch (InterruptedException e) {}
}
System.out.println(getName() + 线程运行结束!);
}
}
概述
public class TwoThreadsDemo {
public static void main (String[] args) {
new SimpleThread(“A).start();
new SimpleThread(“B).start();
}
}
java.lang.Thread
public static void sleep(long millis) throws InterruptedException
Causes the currently executing thread to sleep
(temporarily cease execution)
for the specified number of milliseconds.
10
Java线程
概述
线程的创建
两种方式
文档评论(0)