Java实验8 多线程编程

实验8 多线程编程

实验要求:
(1) 掌握两种创建线程的方法;
(2) 掌握线程同步的方法。

实验内容:
(1) 编程模拟售票系统,模拟多个窗口(至少4个)同时出售100张车票的情况;用实现Runnable接口的方法实现多线程。

/**
 * @author 张小桌桌
 * 编程模拟售票系统,模拟多个窗口(至少4个)同时出售100张车票的情况;
 * 用实现Runnable接口的方法实现多线程。
 */

package shiyan8;

public class EightA implements Runnable{
    private int tickets = 100;
    @Override
    public void run() {
        while (tickets>0){
            synchronized (this){ //同步机制、加锁
                if (tickets>0){
                    tickets--;
                    System.out.println(Thread.currentThread().getName()+"  剩余 "+tickets+" 张票!");
                }
            }
            try { //模仿网络延迟
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        EightA sellTickets = new EightA();

        Thread win1 = new Thread(sellTickets);
        Thread win2 = new Thread(sellTickets);
        Thread win3 = new Thread(sellTickets);
        Thread win4 = new Thread(sellTickets);
        win1.setName("窗口1");
        win2.setName("窗口2");
        win3.setName("窗口3");
        win4.setName("窗口4");

        win1.start();
        win2.start();
        win3.start();
        win4.start();
    }
}

运行结果:
在这里插入图片描述

(2) 利用多线程机制编写程序,输出一个问候语,要求每隔1秒钟输出一个字符。用2种方法分别创建线程。

例如:问候语=“welcome!”,运行结果可能有多种情况,如下表所示,分别说明原因及创建线程的方法。
在这里插入图片描述

  • (1)

  • (2)

  • (3)

  • (4)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值