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();
    }
}

运行结果:
Java实验8 多线程编程_第1张图片

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

例如:问候语=“welcome!”,运行结果可能有多种情况,如下表所示,分别说明原因及创建线程的方法。
Java实验8 多线程编程_第2张图片

  • (1)

  • (2)

  • (3)

  • (4)

你可能感兴趣的:(源代码)