- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
22JAVA_多线程程序设计
第18讲 多线程程序设计 线程的概念 线程的创建 线程调度与线程控制 线程状态与生命周期 学习任务 使用线程编写一个秒表程序,实现开始计时、暂停、清零等功能。(要求使用swing实现图形用户界面) 程序与进程 程序 是指令的集合,包括对数据的描述以及对数据的操作,告诉计算机如何完成一个任务。 进程 进程通常被认为是一个程序的一次动态执行过程。一个进程具有一组完整的、私有的基本运行时资源,特别是内存空间是独立的,不会与其他进程共享。 有时一个程序运行时可能产生多个协作的进程。 线程 线程 线程是进程中的一个执行流(处理器执行程序指令)。因此,线程是处理器的调度单位。一个进程至少有一个线程,也可以有多个线程。如果有多个线程,则这些线程共享该进程的资源(包括内存和打开的文件)。程序的执行从一个线程开始,这个线程称为主线程。 在一个进程中创建多个线程的目的是为了让这些线程可以“并发”执行,从而使一个进程“同时”执行多个任务。在多处理器(或多核)系统中,这种并发是真实的。在单处理器系统中,这种并发是通过线程的交替执行来模拟的。 多任务与多线程 多任务 一台计算机同时运行多个任务(程序) 多任务的实现途径 进程级并发(多进程程序设计) 多个进程同时执行。为了实现多任务,要进行进程的并发控制。 线程级的并发(多线程程序设计) 在一个进程中让不同的线程执行不同的任务,也可以实现多任务。这时因为并发控制仅涉及到处理器的调度,因而并发控制更为简单。 Java中的线程 Java 中线程被认为是一个虚拟CPU、程序代码、和数据的封装体。 一个虚拟的CPU 执行的代码(代码可以与其他线程共享) 代码所操作的数据(数据可以与其他线程共享) 一个线程的代码和数据被称为该线程的线程体。 Java线程类Java.lang.Thread Thread类的实例就是线程,用户通过编写Thread的子类来构造自己的线程。 public class Thread extends Object implements Runnable 在Java中,虚拟CPU被自动封装进Thread类的实例中,线程体则通过实现Runnable接口来提供。 编写线程的主要工作就是编写线程体。 线程体接口java.lang.Runnable Runnable的定义: public interface Runnable { void run();} 该接口只定义了一个run()方法。 线程体决定了线程的行为。有两种方式定义线程体: 编写一个类,实现 Runnable 接口 编写一个类,继承 Thread 类。 通过实现Runnable接口创建线程 定义一个类实现Runnable接口。 将该类的实例作为参数传给Thread类的构造方法,从而创建一个线程对象。 通过实现Runnable接口线程创建示例 Class Xyz implements Runnable{ int i ; //线程的数据定义 public void run( ){ //线程的代码定义(实现run方法) while( true){ System.out.println(“Hello”+i++); if (i==5) break ; } } } public class ThreadTest{ public static void main(String args[ ]){ Xyz r= new Xyz( ); //线程体对象 Thread t = new Thread( r ); //以线程体对象为参数创建线程 t.start( ); //启动线程 } } 通过继承Thread类创建线程 因为Thread 类本身实现了Runnable接口,所以通过编写Thread类的子类,覆盖其中的run( )方法可以直接定义线程体。 创建该子类的对象就可以直接创建线程。 通过编写Thread的子类创建线程示例 Class Xyz extends Thread{ int i ; //线程的数据定义 public void run( ){ //线程的代码定义(覆盖run方法) while( true){ System.out.println(“Hello”+i++); if (i==5) break ; } } } public class ThreadTest{ public static void main(String args[ ]){ Thread t = new Xyz( ); //直接实例化Thread的子类Xyz创建线程 t.start( ); //启动线程 }
文档评论(0)