实 验 报 告
课程名称: Java语言程序设计
姓 名:
学 号:
班 级:
数学与计算机科学学院
数学与计算机科学学院实验报告
实验名称:多线程
指导教师:
日期:
实验内容 1.编写具有两个线程的程序,第一个线程用来计算2-1000000之间的质数及个数,第二个线程用来计算1000000-2000000之间的质数及个数。 2.编写多线程程序,显示目前正在运行的线程名和目前的活动线程数。 实验目的 (1)熟悉利用Thread类建立多线程的方法。 (2)熟悉利用Runnable接口建立多线程的方法。 实验设备 硬件: PC机 软件: Java开发工具Java SE IntelliJ IDEA 2020.1.1 x64集成开发环境 实验结果 第1题代码: class UseThread extends Thread { int st, en, count = 0; public UseThread(int m, int n) { this.st = m; this.en = n; } public void run() { for (int m = st; m <= en; m++) { boolean isPrime = true; for (int i = 2; i < m; i++) if (m % i == 0) { isPrime = false; break; }
if (isPrime) count++; }
System.out.println(st + \+ en + \之间共有\+ count + \个质数\); }
public static void main(String[] args) {
UseThread thread1 = new UseThread(2, 1000); UseThread thread2 = new UseThread(1000, 2000); thread1.start(); thread2.start(); } }
第2题代码:
public class Experiment14_2 {
public static void main(String[] args) { MyThread t1 = new MyThread(\); MyThread t2 = new MyThread(\); t1.start(); t2.start();
System.out.println(\活动线程数:\+ Thread.activeCount()); System.out.println(\运行完毕\); } }
class MyThread extends Thread { public MyThread(String s) { super(s); }
public void run() {
for (int i = 1; i <= 3; i++) {
System.out.println(getName() + \第\+ i + \次运行\); try {
sleep((int) (Math.random() * 100)); } catch (InterruptedException e) { e.printStackTrace(); } }
System.out.println(getName() + \结束\); } }
实验结果 第1题 第2题: 结果分析与结论 1. 第1题中,一开始将数据设置有点大,导致运行速度较慢,我以为是代码有问题,检查后发现代码无误,没想到检测2~100000的质数需要的时间这么长。 2. 创建线程必须继承Thread class它已经为线程的创建和运行做了必要的配置。run是线程就重要的方法,必须通过写这个方法达到想要的目的。 3. run方法所包含的代码就是和其他线程同时运行的代码以达到同一时刻运行多段代码的目的。当终止了run以后,这个线程也就结束了。而当调用线程的start方法才会执行run方法。 教师评阅及成绩 教师签名: 年 月 日