欢迎来到天天文库
浏览记录
ID:22046495
大小:413.50 KB
页数:74页
时间:2018-10-19
《java课件第8章课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章线程郝聚涛jutaohao@sjtu.edu.cn郑莉JAVA语言程序设计目录多线程编程基础线程的生命周期线程的优先级本章小结2上海理工大学java程序设计8.1多线程编程基础本节内容线程的概念Thread类Runnable接口线程间的数据共享多线程的同步控制线程之间的通信后台线程3上海理工大学java程序设计8.1.1线程的概念进程和线程的区别进程一个独立程序的每一次运行称为一个进程,例如用字处理软件编辑文稿时,同时打开mp3播放程序听音乐,这两个独立的程序在同时运行,称为两个进程设置一个进程要占用相当一部分处理器时间和内存资源大多数操作系统不允许进程访问其他进程的内存空间,进程间
2、的通信很不方便,编程模型比较复杂多线程编程基础4上海理工大学java程序设计线程一个程序中多段代码同时并发执行,称为多线程通过多线程,一个进程表面上看同时可以执行一个以上的任务——并发创建线程比创建进程开销要小得多,线程之间的协作和数据交换也比较容易Java是第一个支持内置线程操作的主流编程语言多数程序设计语言支持多线程要借助于操作系统“原语(primitives)”8.1.1线程的概念(续)多线程编程基础5上海理工大学java程序设计8.1.2Thread类Thread类在Java程序中创建多线程的方法之一是继承Thread类封装了Java程序中一个线程对象需要拥有的属性和方法从Thre
3、ad类派生一个子类,并创建这个子类的对象,就可以产生一个新的线程。这个子类应该重写Thread类的run方法,在run方法中写入需要在新线程中执行的语句段。这个子类的对象需要调用start方法来启动,新线程将自动进入run方法。原线程将同时继续往下执行Thread类直接继承了Object类,并实现了Runnable接口。它位于java.lang包中,因而程序开头不用import任何包就可直接使用多线程编程基础6上海理工大学java程序设计8.1.2Thread类(续)——例8_1在新线程中完成计算某个整数的阶乘publicclassEx8_1{publicstaticvoidmain(St
4、ring[]args){System.out.println("mainthreadstarts");FactorialThreadthread=newFactorialThread(10);thread.start();System.out.println("mainthreadends");}}classFactorialThreadextendsThread{privateintnum;publicFactorialThread(intnum){this.num=num;}多线程编程基础7上海理工大学java程序设计publicvoidrun(){inti=num;intresult
5、=1;System.out.println("newthreadstarted");while(i>0){result=result*i;i=i-1;}System.out.println("Thefactorialof"+num+"is"+result);System.out.println("newthreadends");}}运行结果mainthreadstartsmainthreadendsnewthreadstartedThefactorialof10is3628800newthreadends8.1.2Thread类(续)——例8_1运行结果多线程编程基础8上海理工大学java
6、程序设计结果说明main线程已经执行完后,新线程才执行完main函数调用thread.start()方法启动新线程后并不等待其run方法返回就继续运行,thread.run函数在一边独自运行,不影响原来的main函数的运行源程序修改如果启动新线程后希望主线程多持续一会再结束,可在start语句后加上让当前线程(这里当然是main)休息1毫秒的语句:try{Thread.sleep(1);}catch(Exceptione){};8.1.2Thread类(续)——例8_1修改多线程编程基础9上海理工大学java程序设计修改后运行结果mainthreadstartsnewthreadstare
7、dThefactorialof10is3628800newthreadendsmainthreadends运行结果说明新线程结束后main线程才结束8.1.2Thread类(续)——例8_1修改后运行结果多线程编程基础10上海理工大学java程序设计8.1.2Thread类(续)——常用API函数名称说明publicThread()构造一个新的线程对象,默认名为Thread-n,n是从0开始递增的整数publicThre
此文档下载收益归作者所有