电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

Java语言程序设计:第8章 线程

  • 资源ID:295539831       资源大小:451.50KB        全文页数:74页
  • 资源格式: PPT        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

Java语言程序设计:第8章 线程

第八章第八章 线程线程JAVA语言程序设计目录目录l多线程编程基础多线程编程基础l线程的生命周期线程的生命周期l线程的优先级线程的优先级l本章小结本章小结28.1 多线程编程基础多线程编程基础l本节内容本节内容线程的概念Thread类Runnable接口线程间的数据共享多线程的同步控制线程之间的通信后台线程38.1.1 线程的概念线程的概念l进程和线程的区别进程和线程的区别l进程进程一个独立程序的每一次运行称为一个进程,例如l用字处理软件编辑文稿时,同时打开mp3播放程序听音乐,这两个独立的程序在同时运行,称为两个进程设置一个进程要占用相当一部分处理器时间和内存资源大多数操作系统不允许进程访问其他进程的内存空间,进程间的通信很不方便,编程模型比较复杂 多线程编程基础4l线程线程一个程序中多段代码同时并发执行,称为多线程通过多线程,一个进程表面上看同时可以执行一个以上的任务并发创建线程比创建进程开销要小得多,线程之间的协作和数据交换也比较容易Java是第一个支持内置线程操作的主流编程语言多数程序设计语言支持多线程要借助于操作系统“原语(primitives)”8.1.1 线程的概念线程的概念(续续)多线程编程基础58.1.2 Thread类类lThread类类在Java程序中创建多线程的方法之一是继承Thread类 封装了Java程序中一个线程对象需要拥有的属性和方法从Thread类派生一个子类,并创建这个子类的对象,就可以产生一个新的线程。这个子类应该重写Thread类的run方法,在run方法中写入需要在新线程中执行的语句段。这个子类的对象需要调用start方法来启动,新线程将自动进入run方法。原线程将同时继续往下执行Thread类直接继承了Object类,并实现了Runnable接口。它位于java.lang包中,因而程序开头不用import任何包就可直接使用多线程编程基础68.1.2 Thread类类(续续)例例8_1l在新线程中完成计算某个整数的阶乘在新线程中完成计算某个整数的阶乘public class Ex8_1 public static void main( String args ) System.out.println(main thread starts);FactorialThread thread=new FactorialThread(10); thread.start(); System.out.println(main thread ends ); class FactorialThread extends Thread private int num; public FactorialThread( int num ) this.num=num; 多线程编程基础7public void run() int i=num; int result=1; System.out.println(new thread started ); while(i0) result=result*i; i=i-1; System.out.println(The factorial of +num+ is +result); System.out.println(new thread ends); l运行结果运行结果main thread startsmain thread endsnew thread startedThe factorial of 10 is 3628800new thread ends8.1.2 Thread类类(续续)例例8_1运行结果运行结果多线程编程基础8l结果说明结果说明main线程已经执行完后,新线程才执行完main函数调用thread.start()方法启动新线程后并不等待其run方法返回就继续运行,thread.run函数在一边独自运行,不影响原来的main函数的运行l源程序修改源程序修改如果启动新线程后希望主线程多持续一会再结束,可在start语句后加上让当前线程(这里当然是main)休息1毫秒的语句:try Thread.sleep(1); catch(Exception e);8.1.2 Thread类类(续续)例例8_1修改修改多线程编程基础9l修改后运行结果修改后运行结果main thread startsnew thread staredThe factorial of 10 is 3628800new thread endsmain thread endsl运行结果说明运行结果说明新线程结束后main线程才结束8.1.2 Thread类类(续续)例例8_1修改后运行结果修改后运行结果多线程编程基础108.1.2 Thread类类(续续)常用常用API函数函数名称说明public Thread()构造一个新的线程对象,默认名为Thread-n,n是从0开始递增的整数public Thread(Runnable target)构造一个新的线程对象,以一个实现Runnable接口的类的对象为参数。默认名为Thread-n,n是从0开始递增的整数public Thread(String name)构造一个新的线程对象,并同时指定线程名public static Thread currentThread()返回当前正在运行的线程对象public static void yield()使当前线程对象暂停,允许别的线程开始运行public static void sleep(long millis)使当前线程暂停运行指定毫秒数,但此线程并不失去已获得的锁旗标。多线程编程基础11public void start()启动线程,JVM将调用此线程的run方法,结果是将同时运行两个线程,当前线程和执行run方法的线程public void run()Thread的子类应该重写此方法,内容应为该线程应执行的任务。public final void stop()停止线程运行,释放该线程占用的对象锁旗标。public void interrupt()打断此线程public final void join()在当前线程中加入调用join方法的线程A,直到线程A死亡才能继续执行当前线程public final void join(long millis)在当前线程中加入调用join方法的线程A,直到到达参数指定毫秒数或线程A死亡才能继续执行当前线程8.1.2 Thread类类(续续)常用常用API函数函数多线程编程基础12public final void setPriority(int newPriority)设置线程优先级public final void setDaemon(Boolean on)设置是否为后台线程,如果当前运行线程均为后台线程则JVM停止运行。这个方法必须在start()方法前使用public final void checkAccess()判断当前线程是否有权力修改调用此方法的线程public void setName(String name)更该本线程的名称为指定参数public final boolean isAlive()测试线程是否处于活动状态,如果线程被启动并且没有死亡则返回true8.1.2 Thread类类(续续)常用常用API函数函数多线程编程基础13l创建创建3个新线程,每个线程睡眠一段时间(个新线程,每个线程睡眠一段时间(06秒),然秒),然后结束后结束public class Ex8_2 public static void main( String args ) /创建并命名每个线程 TestThread thread1 = new TestThread( thread1 ); TestThread thread2 = new TestThread( thread2 ); TestThread thread3 = new TestThread( thread3 ); System.out.println( Starting threads ); thread1.start(); / 启动线程1 thread2.start(); / 启动线程2 thread3.start(); / 启动线程3 System.out.println( Threads started, main endsn ); 8.1.2 Thread类类(续续)例例8_2多线程编程基础14class TestThread extends Thread private int sleepTime; public TestThread( String name ) super( name ); sleepTime = ( int ) ( Math.random() * 6000 ); public void run() try System.out.println( getName() + going to sleep for + sleepTime ); Thread.sleep( sleepTime ); /线程休眠 catch ( InterruptedException exception ) ; System.out.println( getName() + finished 8.1.2 Thread类类(续续)例例8_2多线程编程基础15l运行结果运行结果Starting threadsThreads started, main endsthread1 going to sleep for 3519thread2 going to sleep for 1689thread3 going to sleep for 5565thread2 finishedthread1 finishedthread3 finishedl说明说明由于线程3休眠时间最长,所以最后结束,线程2休眠时间最短,所以最先结束每次运行,都会产生不同的随机休眠时间,所以结果都不相同8.1.2 Thread类类(续续)例例8_2运行结果运行结果多线程编程基础168.1.3 Runnable接口接口lRunnable接口接口Java多线程机制的一个重要部分,实际上它只有一个run()方法Thread类实现了Runnable接口,相对于Thread类,它更适合于多个线程处理同一资源实现Runnable接口的类的对象可以用来创建线程,这时start方法启动此线程就会在此线程上运行run()方法在编写复杂程序时相关的类可能已经继承了某个基类,而Java不支持多继承,在这种情况下,便需要通过实现Runnable接口来生成多线程多线程编程基础17l使用使用Runnable接口实现例接口实现例8_1功能功能public class Ex8_1 public static void main( String args ) System.out.println(main thread starts); FactorialThread t=new FactorialThread(10); new Thread(t).start(); System.out.println(new thread started,main thread ends ); 8.1.3 Runnable接口接口(续续)例例8_3多线程编程基础18class FactorialThread implements Runnable private int num; public FactorialThread( int num ) this.num=num; public void run() int i=num; int result=1; while(i0) result=result*i; i=i-1; System.out.println(The factorial of +num+ is +result); System.out.p

注意事项

本文(Java语言程序设计:第8章 线程)为本站会员(经***)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.