您所在位置: 网站首页 / Java编程 第七章.ppt / 文档详情
Java编程 第七章.ppt 立即下载
2024-09-12
约8.5千字
约88页
0
261KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

Java编程 第七章.ppt

Java编程第七章.ppt

预览

免费试读已结束,剩余 83 页请下载文档后查看

15 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

线程
程序是由若干条语句组成的语句序列,是一段静态代码。
进程是程序的一次动态执行过程。
一个线程是一个程序内部的顺序执行控制流。
线程和进程
多进程:在操作系统中,能同时运行多个程序(任务)。
多线程:在同一应用程序中,有多个顺序流同时执行。
每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大。
线程:轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。线程的概念模型线程体线程的状态(四态)创建状态(newThread)
	ThreadmyThread=newMyThreadClass();
可运行状态(Runnable)
	ThreadmyThread=newMyThreadClass();
	myThread.start();
不可运行状态(NotRunnable)
	调用了sleep()方法;
	调用了suspend()方法;
	为等候一个条件变量,线程调用wait()方法;
	输入输出流中发生线程阻塞;
死亡状态(Dead)
	线程的终止一般可通过两种方法实现:自然撤消(线程执行完)或是被停止(调用stop()方法)。线程体的构造构造线程体的2种方法
定义一个线程类,它继承类Thread并重写其中的方法run();
创建一个实现Runnable接口的类作为线程的目标对象,在初始化一个Thread类或者Thread子类的线程对象时,把目标对象传递给这个线程实例,由该目标对象提供线程体run()。publicThread(Runnabletarget)通过继承类Thread构造线程体		System.out.println("DONE!"+getName());
}
}
	publicclassTwoThreadsTest{
	publicstaticvoidmain(Stringargs[]){
newSimpleThread("First").start();
newSimpleThread("Second").start();
}
}
		0First
0Second
1Second
1First
2First
2Second
3Second
3First
4First
4Second
		5First
5Second
	6Second		6First
7First
7Second
8Second
9Second
8First
DONE!Second
9First
	DONE!First
通过接口构造线程体	publicvoidrun(){
		while(clockThread!=null){
		repaint();
		try{
			clockThread.sleep(1000);
		}catch(InterruptedExceptione){}
		}
	}
	publicvoidpaint(Graphicsg){
		Datenow=newDate();
		g.drawString(now.getHours()+":"+now.getMinutes()+			":"	+now.getSeconds(),5,10);
	}
	publicvoidstop(){
		clockThread.stop();
		clockThread=null;
	}
}两种方法的比较线程的调度下面几种情况下,当前线程会放弃CPU:
线程调用了yield()或sleep()方法主动放弃;
由于当前线程进行I/O访问,外存读写,等待用户输入等操作,导致线程阻塞;
为等候一个条件变量,线程调用wait()方法;
抢先式系统下,由高优先级的线程参与调度;时间片方式下,当前时间片用完,由同优先级的线程参与调度。线程的优先级classThreadTest{
publicstaticvoidmain(Stringargs[]){
Threadt1=newMyThread("T1");
t1.setPriority(Thread.MIN_PRIORITY);
t1.start();
Threadt2=newMyThread("T2");
t2.setPriority(Thread.MAX_PRIORITY);
t2.start();
	Threadt3=newMyThread("T3");
	t3.setPriority(Thread.MAX_PRIORITY);
t3.start();
}
		}classMyThreadextendsThread{
Stringmessage;
MyThread(Stringmessage){
this.message=message;
}
publicvoidrun(){
for(inti=0;i<3;i++)
System.ou
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

Java编程 第七章

文档大小:261KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用