实验七 多线程并发实验

编程入门 行业动态 更新时间:2024-10-09 11:25:17

实验七 <a href=https://www.elefans.com/category/jswz/34/1767532.html style=多线程并发实验"/>

实验七 多线程并发实验

一、实验目的

1.掌握使用Thread子类和Runnable接口创建多线程的方法。
2.掌握线程的执行过程。

二、 实验内容

7179

利用多线程技术编写一个模拟龟兔赛跑的程序,要求如下:

(1)乌龟每次跑一个单位,兔子每次跑10个单位;

(2)每个线程运行时,判断是否达到终点,如果到达终点,给出提示信息,未到终点则提示目前距离终点的距离,并判断是否领先;

(3)如果兔子领先,则显示“我跑得快,睡一觉”信息,并睡一会。

package Test;
import java.util.*;
import java.math.*;class Run implements Runnable{int distance=50;int rabbit=0;int turtle=0;public void run() {if(Thread.currentThread().getName().equals("turtle")) {for(;turtle<distance;turtle+=1) System.out.println("乌龟距离终点"+(distance-turtle));					System.out.println("乌龟到达终点");}if(Thread.currentThread().getName().equals("rabbit")) {for(;rabbit<distance;rabbit+=10){System.out.println("兔子距离终点"+(distance-rabbit));if(rabbit>turtle) {System.out.println("兔子领先,将停下休息");try{Thread.sleep(1);}catch(Exception e){e.printStackTrace();}}}		System.out.println("兔子到达终点");}}
}
public class Test {public static void main(String[] args) throws IllegalArgumentException {Scanner scanner=new Scanner(System.in);Run run=new Run();Thread thread1=new Thread(run,"turtle");Thread thread2=new Thread(run,"rabbit");thread1.start();thread2.start();}
}

结果:

8690

编写多线程应用程序,模拟多人过独木桥的模拟。

独木桥每次只能通过一个人,每个人通过木桥的时间为5秒,随机生成10个人,同时准备过此独木桥,显示一下每次通过独木桥人的姓名。需要用到随机数。 

package Test;
import java.util.*;
import java.math.*;class Person implements Runnable{public void run() {synchronized(this) {System.out.println(Thread.currentThread().getName()+"正在过桥");try {Thread.sleep(5000);}catch(Exception e){e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"已过桥");}	}
}
public class Test {public static void main(String[] args) throws IllegalArgumentException {Scanner scanner=new Scanner(System.in);String[] randomName=new String[100];String[] name=new String[10];Person person=new Person();for(int i=0;i<100;i++) {randomName[i]=""+(i+1);}	for(int i=0;i<10;i++) {name[i]=randomName[(int)(Math.random()*15)];//System.out.print((int)(Math.random()*10)+" ");}for(String i:name)System.out.println("名字:"+i);for(String i:name){Thread thread=new Thread(person,i);thread.start();} }
}

结果:

 7180

哈尔滨火车站下面有三个火车票代售点:哈站、哈东站、哈西站,假如哈尔滨到北京的火车票总共是200张,如何用程序来实现三个售票点同时卖票的功能。

注意:考虑线程同步问题,避免出现重复卖票问题。需要考虑同步问题。

package Test;
import java.util.*;
import java.math.*;class Station implements Runnable{private int tickets=10; public void run() {while(true){synchronized(this){if(tickets<=0)break;System.out.println(Thread.currentThread().getName()+"  "+tickets+"号票已卖出");tickets--; 	 	}try {Thread.sleep(100);}catch(Exception e) {e.printStackTrace();}}}	
}
public class Test {public static void main(String[] args) throws IllegalArgumentException {Scanner scanner=new Scanner(System.in);Station station=new Station();Thread haStation=new Thread(station,"哈站");Thread haEastStation=new Thread(station,"哈东站");Thread haWestStation=new Thread(station,"哈西站");haStation.start();haEastStation.start();haWestStation.start();}
}

结果:

更多推荐

实验七 多线程并发实验

本文发布于:2024-02-06 13:17:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1749430.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多线程

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!