1基于线程的编程技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一基于线程的编程技术
一.实验内容:
熟悉基于多线程的编程技术,编程实现简单的多线程编程实例。
题目可以选取教材或习题中的多线程编程实例。
二.实验目的和要求
1)掌握使用一门语言进行多线程编程
2)编写程序将多线程的执行过程动态的演示出来。
三.实验方法和步骤
线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。
多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。
多个线程的执行是并发的,多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,由此带来的线程调度,同步等问题。
1.实验方法
1)使用流程图描述演示程序的设计思想;
2)选取C++、JA V A等计算机语言,编程调试,最终给出运行正确的程序。
2.程序设计
方法一:继承Thread实现线程
public class MyThread extends Thread
{
int count= 1, number;
public MyThread(int num)
{
number = num;
System.out.println
("创建线程" + number);
}
public void run() {
while(true) {
System.out.println
("线程" + number + ":计数" + count);
if(++count== 6) return;
}
}
public static void main(String args[])
{
for(int i = 0;i 〈5; i++) new MyThread(i+1).start();
}
}
方法二:实现Runnable 接口
public class MyThread implements Runnable
{
int count= 1, number;
public MyThread(int num)
{
number = num;
System.out.println("创建线程" + number);
}
public void run()
{
while(true)
{
System.out.println
("线程" + number + ":计数" + count);
if(++count== 6) return;
}
}
public static void main(String args[])
{
for(int i = 0; i 〈5;i++) new Thread(new MyThread(i+1)).start();
}
}
参考代码:
package edu.cs.ding;
public class MyThread implements Runnable {
int count = 1, number;
public MyThread(int num) {
number = num;
}
public void run() {
while (true) {
if (number % 2 == 0) {
System.out.println("这是一个练习!");
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
System.out.println("This is an exercise!");
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public static void main(String args[]) {
new Thread(new MyThread(1)).start();
new Thread(new MyThread(2)).start();
}
}
四.实验结果分析
分析两线程交替运行的情况,考虑能否采取一些措施控制两线程的交替次序。