成绩:
面向对象原理与Java实践课程实验报告
实验5:多线程
姓 名 _ __ _
班 级 _____
学 号 ____
实验地点 _
实验时间 _____
指导教师 _ __ __
一、实验目的:
l 了解线程调度机制
l 理解线程同步机制
l 掌握线程设计方法
二、实验要求:
l 掌握线程创建的方法
l 掌握线程的基本控制方法
l 掌握线程间的同步控制方法
三、实验内容:
1、生随机成1万个整数,利用线程技术计算两种不同排序算法对这些数排序的运行时间。
2、有一水塘,可实现注水和排水操作。当水塘无水时不能对其再进行排水操作,当水塘水满时不能对其再进行注水操作。创建水塘类Pond、注水线程Injection和排水线程Drain,假设注水线程可以在10分钟内将水塘注满水,排水线程可以在10分钟内将水塘的水全排出。试实现水塘的注水和排水过程。
四、设计思路:
五、程序源代码:
package pkg_1;
import java.util.Scanner;
public class Demo1
{
public static void main(String[] args)
{
public class RandomNumber implements Runnable {
private final byte[] lock;
private Random random;
private int sum;
public RandomNumber() {
lock = new byte[1];
random = new Random();
}
@Override
public void run() {
while (true) {
int rd = random.nextInt(1001); // 产生0 - 10000的随机数
if (rd == 0) {
continue;
} else {
if (sum >= 10000) {
return;
}
try {
Thread.sleep(1); // 为了效果更明显,当前线程睡1毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lock) {
if (sum < 10000) {
sum++;
System.out.println(Thread.currentThread().getName()
+ " - 第" + sum + "个随机数:" + rd);
}
}
}
}
}
// main测试函数
public static void main(String[] args) throws Exception {
RandomNumber rn = new RandomNumber();
// 循环产生50个线程
for (int i = 0; i < 50; i++) {
new Thread(rn).start();
}
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Sort {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (true) {
System.out.println("请输入数字,以空格分隔:");
try {
String input = br.readLine();
String[] vector = input.split(" ");
int[] num = new int[vector.length];
for (int i = 0; i < vector.length; i++) {
num[i] = Integer.parseInt(vector[i]);
}
for (int j = 0; j < vector.length; j++) {
for (int k = 1; k < vector.length - 1; k++) {
if (num[k] > num[k + 1]) {
int temp = num[k + 1];
num[k + 1] = num[k];
num[k] = temp;
}
}
System.out.print(num[j] + " ");
}
System.out.println();
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
六、实验过程中遇到的问题及解决手段:
七、本次实验的体会(结论):
展开阅读全文