- 1、本文档共83页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章Java线程
【本章导读】
本章首先介绍了线程的基本概念,区别了线程和进程
图6-2 进程和线程之间的关系
作为进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。 线程是程序中一个单一的顺序控制流程在单个程序中同时运行多个线程完成不同的工作称为多线程线程和进程的区别在于子进程和父进程有不同的代码和数据空间而多个线程则共享数据空间每个线程有自己的执行堆栈和程序计数器为其执行上下文多线程主要是为了节约CPU时间发挥利用根据具体情况而定线程的运行中需要使用计算机的内存资源和CPU
图6-3进程中的多线程同时运行
例如,我们使用浏览器时,可以在由浏览器打开的毕竟中打印页面,同时可滚动操作该页面,还可同时听音频文件和观赏动画图象。这些任务中的每一个都是由线程完成的。
Java对线程有内部的支持。Java体系结构的主要部分是多线程的,而且,Java程序中的线程大多允许applet同时接受用户的输入和显示另一动画,完成的这些任务就是采用了多线程。使用多线程的优势:
1)减轻编写交互频繁、涉及面多的程序的困难.
2)程序的吞吐量会得到改善.
3)由多个处理器的系统,可以并发运行不同的线程.(否则,任何时刻只有一个线程在运行)
6.2 创建线程的方式
Java中实现线程的方式有两种,一是生成Thread类的子类,并定义该子类自己的run方法,线程的操作在方法run中实现。但我们定义的类一般是其他类的子类,而Java又不允许多重继承,因此第二种实现线程的方法是实现Runnable接口。通过覆盖Runnable接口中的run方法实现该线程的功能。基本的格式如下:
继承 Thread类,比如
class MyThread extends Thread {
public void run() {
// 这里写上线程的内容
}
public static void main(String[] args) {
// 使用这个方法启动一个线程
new MyThread().start();
}
}
实现 Runnable接口
class MyThread implements Runnable{
public void run() {
// 这里写上线程的内容
}
public static void main(String[] args) {
// 使用这个方法启动一个线程
new Thread(new MyThread()).start();
}
}一般鼓励使用第二种方法,应为Java里面只允许单一继承,但允许实现多个接口。第二个方法更加灵活。 类Thread在包java.lang中定义,它的构造方法如下:
public Thread();
public Thread(Runnable target);
public Thread(Runnable target,String name);
public Thread(String name);
public Thread(ThreadGroup group,Runnable target);
public Thread(ThreadGroup group, String name);
主要方法
isActive() 判断是否处于执行状态
Suspend() 暂停执行
reSume 恢复执行
start() 开始执行
Stop() 停止执行
sleep() 睡眠
run() 程序体
yield() 向其他线程退让运行权 public class MyThread extends Thread
{
int count=1,number;
public MyThread(int num)
{
number=num;
System.out.println(Create the thread!+number);
}
public void run()
{
while(true)
{
System.out.println(Threads+number+:Count+count);
if(++count==6)
return;
}
}
public static
您可能关注的文档
最近下载
- DB41T 2431-2023 重点区域地质灾害风险调查评价规范(1:10000).docx VIP
- 2012 INTERNATIONAL BUILDING CODE (2012年国际建筑规范).pdf VIP
- 金龙湖养老度假基地可行性报告.doc VIP
- 光伏发电工程施工规范.docx VIP
- 渗透检测工艺规程.pptx VIP
- 质量员考试(市政质量)基础知识试卷真题(2025年新版附解析).docx VIP
- 幼儿园课件:变焦PPT.ppt
- KEF音响无线HiFi扬声器LS50 Wireless II用户手册.pdf VIP
- 一种低气味、低刺激双固化胶粘剂及其制备方法.pdf VIP
- 设计机构设置和岗位职责.docx VIP
文档评论(0)