一、实验目的
1. 线程的概念、线程的生命周期。
2. 多线程的编程:继承Thread类与使用Runnable接口。
3. 使用多线程机制实现动画。
二、实验要求
1. 掌握利用JAVA语言编写多线程程序的方法
2. 掌握线程的调度方法
3. 掌握多线程环境中GUI程序的编写方法
三、实验内容
(一)Thread子类的方法实现多线程
1. 编写KY11_1.java 程序文件,源代码如下。
class SimpleThread extends Thread {
public SimpleThread(String str) {
super(str);
}
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(i + " " + getName());
try {
sleep((int)(Math.random() * 1000));
} catch (InterruptedException e) {}
}
System.out.println("DONE! " + getName());
}
}
public class TwoThreadsTest {
public static void main (String[] args) {
new SimpleThread("Go to Beijing??").start();
new SimpleThread("Stay here!!").start();
}
}
2. 编译、运行
(二)实现Runnable接口的方法实现多线程
1. 程序功能:一个时钟Applet,它显示当前时间并逐秒进行更新
2. 编写KY11_2.java 程序文件,源代码如下。
import java.awt.*;
import java.applet.*;
import java.util.*;
public class Clock extends Applet implements Runnable{
Thread clockThread;
public void start(){
if(clockThread==null){
clockThread=new Thread(this,"Clock");
clockThread.start();
}
}
public void run(){
while(clockThread !=null){
repaint();
try{
clockThread.sleep(1000);
}catch(InterruptedException e){}
}
}
public void paint(Graphics g){
Date now=new Date();
g.drawString(now.getHours()+";"+now.getMinutes()+";"+now.getSeconds(),5,10);
}
public void stop(){
clockThread.stop();
clockThread=null;
}
}
3. 编译并运行
四、思考题
1. 简述并区分程序、进程和线程三个概念。
2. 线程有哪几个基本的状态?Java中线程调度遵循何种原则?
3. 实现多线程可以用哪两种基本方法?将这两种方法进行比较。
分享到:
相关推荐
实验二 线程与同步 henxiangxi nachos的实验报告
实验4 线程编程实验.doc
操作系统实验 线程的同步 深入理解线程与进程的概念,在Windows环境下何时使用进程,何时使用线程?
操作系统实验-线程的创建和撤消.pdf
实验三 线程管理.docx
操作系统实验(三)线程的互斥 操作系统实验(三)线程的互斥
操作系统实验 多线程同步与互斥 java编写 可动态创建
一、实验目的 1. 熟悉线程的定义、创建及应用方法,掌握编译源代码时引入线程库的方法。 2. 掌握如何利用信号量完成线程间的同步与互斥。 3. 熟悉Makefile工作原理,掌握编写Makefile的编写方法。 二、实验基本要求 ...
操作系统实验Nachos线程审计实验代码及实验报告
操作系统实验报告,原创,写得很认真的。 内容为进程与线程同步,有流程图及源代码等
nachos实验二线程与同步,说明文档,不是实验报告
通过 Linux 系统中线程和管道通信机制的实验,加深对于线程控制和管道通信概念的理解,观察和体验并发进/线程间的通信和协作的效果 ,练习利用无名管道进行进/线程间通信的编程和调试技术
本文件为操作系统中的线程同步实验的实验报告,有详细的代码和解释。
大家不要下载,这程序是本人上传的,只是实现了多线程和互斥,老师说不能算是同步。
重大软院操作系统实验二:线程调度,计算机操作系统原理,linux
设有二元函数 f(x,y) = f(x) + f(y) 其中: f(x) = f(x-1) * x (x >1) f(x)=1 (x=1) f(y) = f(y-1) + f(y-2) (y> 2) f(y)=1 (y=1,2) 请编程建立 3 个并发协作进程或线程,它们分别完成 f(x,y)、f(x)、f(y)
操作系统实验报告:线程的创建和撤销; 基于Windows xp;需要提前安装虚拟机;内含源程序和程序运行结果。
i++)//建立含1000个结构体的链表,第一个结构体的hand存放第一个线程,后面以此类推 { threadlist p=new thread(); // 创建一个结构体,并用p指向它 p->number=i; p->hand=CreateThread (NULL, 0, Fun1, NULL,...
编写一多线程程序,实现如下功能: (1)一个线程进行阶乘和的运算(1!+2!+3!……+30!), 每次阶乘计算时间随机间隔0.5-1秒; (2)另一个线程每隔1秒时间读取上个线程的运算结果和计算 进程,并在图形界面中...
实验一 :WindowsThreads多线程编程实验