java 多线程实验报告 篇一:java 多线程实验报告及代码 一、实验内容 题目一 练习教材第 325 页-327 页的 7-1、7-2、7-3 三个实验题,分析结果,并总结输出结果与分析结果的异同; 题目二 编写程序实现阶乘和的运算:一个线程进行阶乘和的运算,而另一个线程则每隔一段时间读取上一个线程的运算结果。 设计一个窗体,以进度条的形式显示计算线程的执行进程。 详细说明界面设计过程,并分析程序的执行结果; 二、实验过程 1、将 7-1、7-2、7-3 的源代码写入,分析输出结果并总结输出结果与分析结果的异同; 2、一个线程进行阶乘和的运算(1!+2!+3!+……+100!),每次计算时间随机间隔 1-10 毫秒;另一个线程每隔 10 毫秒时间读取并显示上个线程的运算结果和计算进程。 三、实验结果 实验结果部分截图: 四、讨论与分析 题目一: 7-1 此程序共有两个线程,一个主线程,一个用户线程,主线程执行 5 次,而用户线程执行 10 次; 7-2 1、Timer t = new Timer(true); 一个计时器,Timer()后的参数代表是不是一个首部线程,若true:这个计时器是守护线程,这个计时器在 main 方法中被调用,那么也应该是主线程,所以这个计时器停止时,整个程序也就停止了;即对此程序而言只执行十二次(由 t.schedule()决定);若为false,则主线程与计时器独立。 7-3 1、runners 是一个 SelfishRunner 类型的数组,这个数组里有两个元素;循环执行 题目二: 能实现一个线程进行阶乘和的运算(1!+2!+3!+……+100!),每次计算时间随机间隔 1-10 毫秒;另一个线程每隔 10 毫秒时间读取并显示上个线程的运算结果和计算进程。 但是在界面上显示结果时遇到问题,并且不知道问题出在哪里。 五、附录:关键代码 一个线程进行阶乘和的运算(1!+2!+3!+……+100!),每次计算时间随机间隔 1-10 毫秒;另一个线程每隔 10 毫秒时间读取并显示上个线程的运算结果和计算进程。 package jiecheng; public class jiec { public static void main(String[] args) { MyThread mt = new MyThread(); new Thread(mt).start(); while (mt.i = 100) { try { Thread.sleep(10); } catch (InterruptedException ex) { } System.out.println(mt.sum); } } } class MyThread implements Runnable { double sum = 0; int i; public void run() { double factorial =...