一.理论知识部分
1.程序是一段静态的代码,它应用程序执行蓝 是一段静态的代码,它应用程序执行蓝 是一段静态的代码,它应用程序执行蓝本。
2.进程是程序的一次动态执行,它对应了从代码加载、执行至执行完毕的一个完整过程。
3.多线程是进程执行过中产生的多条线索。
4.线程是比进程执行更小的单位。
5.线程不能独立存在,必须存在于进程中,同一进 程的各线程间共享进程空间的数据。
6.多线程意味着一个程序的多行语句可以看上去几 乎在同一时间内同时运行。
7.用Thread类的子类创建线程:首先需从Thread类派生出一个子类,在该子类中 重写run()方法。然后用创建该子类的对象。 最后用start()方法启动线程。
8.用Runnable()接口实现线程:首先设计一个实现Runnable接口的类; 然后在类中根据需要重写run方法; 再创建该类对象,以此对象为参数建立Thread 类的对象; 调用Thread类对象的start方法启动线程,将 CPU执行权转交到run方法。
9.线程的终止:当线程的run方法执行方法体中最后一条语句后, 或者出现了在run方法中没有捕获的异常时,线 程将终止,让出CPU使用权。调用interrupt()方法也可终止线程。
10.线程的状态:利用各线程的状态变换,可以控制各个线程轮流 使用CPU,体现多线程的并行性特征。线程有如下7种状态: New (新建) 、Runnable (可运行) 、Running(运行) 、Blocked (被阻塞) 、Waiting (等待) 、Timed waiting (计时等待) 、Terminated (被终止)
11.调用setPriority(int a)重置当前线程的优先级, a 取值可以是前述的三个静态量。
调用getPriority()获得当前线程优先级。
12.多线程并发执行中的问题:
多个线程相对执行的顺序是不确定的。线程执行顺序的不确定性会产生执行结果的不确定性。 在多线程对共享数据操作时常常会产生这种不确定性。
二.实验部分
1、实验目的与要求
(1) 掌握线程概念;
(2) 掌握线程创建的两种技术;
(3) 理解和掌握线程的优先级属性及调度方法;
(4) 掌握线程同步的概念及实现技术;
2、实验内容和步骤
实验1:测试程序并进行代码注释。
测试程序1:
l 在elipse IDE中调试运行ThreadTest,结合程序运行结果理解程序;
l 掌握线程概念;
l 掌握用Thread的扩展类实现线程的方法;
l 利用Runnable接口改造程序,掌握用Runnable接口创建线程的方法。
Thread扩展类:
1 class Lefthand extends Thread { 2 public void run() 3 { 4 for(int i=0;i<=5;i++) 5 { System.out.println("You are Students!"); 6 try{ sleep(500); } 7 catch(InterruptedException e) 8 { System.out.println("Lefthand error.");} 9 } 10 } 11 } 12 class Righthand extends Thread { 13 public void run() 14 { 15 for(int i=0;i<=5;i++) 16 { System.out.println("I am a Teacher!"); 17 try{ sleep(300); } 18 catch(InterruptedException e) 19 { System.out.println("Righthand error.");} 20 } 21 } 22 } 23 public class ThreadTest 24 { 25 static Lefthand left; 26 static Righthand right; 27 public static void main(String[] args) 28 { left=new Lefthand(); 29 right=new Righthand(); 30 left.start(); 31 right.start(); 32 } 33 }