4.1创建及控制线程.pptVIP

  • 2
  • 0
  • 约4.1千字
  • 约 19页
  • 2017-04-04 发布于江苏
  • 举报
4.1创建及控制线程

4.1创建及控制线程 主讲教师:胡祝华 一、知识能力目标 1.掌握线程概念及其实现机制; 2.掌握线程属性及其方法; 3.掌握线程的创建、运行、阻塞和终止。 4.能创建具有线程的Java程序 二、项目28 简单的多线程程序 使用一个线程用于计时,并使用另一个线程完成工作。在这个实例中,由run()方法实现的线程用于打印信息,由main()方法创建的主线程用于计时,这个线程一开始休眠10秒再开始执行。 1.程序代码 //SimpleThread.java public class SimpleThread extends Thread{ public static boolean f=false; /*声明变量f成为控制线程运行的标志*/ public void run(){ /*为线程创建run()方法*/ work(); /*如果想让线程完成不同的工作,只要修改work()方法*/ } private void work(){ //创建并实现work()方法,本例中work方法的功能是输出进行加法运算的次数 for(long i=1;;i++){ if(f==true){ System.out.println(进行了+i+次加法运算); break; } }} public static void main(String args[]){ SimpleThread r=new SimpleThread (); r.start(); /*调用start()方法运行run()方法从而启动线程*/ try{ Thread.sleep(10000); /*计时,主线程休眠10秒后再次开始运行*/ } catch (InterruptedException e){ } f=true; } } 2.相关知识 程序、进程、线程和多任务 程序(program) 对数据描述与操作的代码的集合 应用程序执行的脚本。 进程(process) 程序的一次执行过程 操作系统运行程序的基本单位 系统运行一个程序就是一个进程从创建、运行到消亡的过程 系统可以为一个程序同时创建多个进程 线程(thread) 比进程更小的运行单位 程序中单个顺序的流控制 一个进程可以被划分成多个线程 线程与程序 相同点:有开始、一系列可执行的命令序列、一个结束。在执行的任何时候,只有一个执行点 不同点:线程本身不能运行,只能包含在程序中,在程序中执行。一个线程在程序运行时,必须争取到为自己分配的系统资源。 多线程(相对于单线程而言) 在一个程序中可以定义多个线程并同时运行它们,每个线程可以执行不同的任务。 与进程不同:同类多线程共享一块内存空间和一组系统资源,所以系统创建多线程开销相对较小。因此,也称线程为轻负荷进程。 把程序分解成彼此独立的子任务,每一个独立的子任务由一个线程来完成 创建线程和启动线程的区别 在一个线程对新线程的Thread对象调用start()方法之前,这个新线程并没有真正开始执行 Thread对象在其线程真正启动之前就已经存在了,而且其线程退出之后仍然存在。 main()方法中可以创建若干个Thread类或者它的子类的对象,并且不设置这些对象中的任何引用 Java的垃圾收集器一般并不会清理这些对象,只有在线程离开了run()并且死亡之后才把它们清除。 不建议在构造器中通过start()方法启动线程 暴露了部分构造的对象给新线程,从封装的角度看是不可取的。 如果对象拥有一个线程,那么它应该提供一个启动该线程的start()或init()方法,而不是在构造器中启动它 应用拓展 主线程由main()创建,程序开始运行,在运行过程中另一个线程需要立即运行,主线程为这个线程让步,暂停运行,等待这个抢先运行的线程结束后再继续运行 1.程序代码 // Joinexam.java class Thread1 extends Thread{ public Thread1(){ start(); //Thread1对象实例化的时候就会开始执行线程 } public void run(){ for(int i=1;i=3;i++){ /*使用getName()方法获得当前线程的名称*/ System.out.println(线程+this.getName()+运行了+i+秒); /*本程序块控制程序每次完成输出后休眠1秒*/

文档评论(0)

1亿VIP精品文档

相关文档