zl程序教程

您现在的位置是:首页 >  后端

当前栏目

生产与消费(多线程练习题)

多线程 生产 消费 练习题
2023-09-14 09:05:15 时间

前言:该题目是网上寻找的一个比较好的,多线程的java练习题,博主写下自己的代码,方便大家一起学习理解,java多线程。
在这里插入图片描述

提交代码

import java.util.Random;
import java.util.Vector;

public class Main {
    static Random random = new Random();
    static Vector<String> queue = new Vector<>(); // 创建队列

    static class MyThread extends Thread{  // 通过继承的方法来实现多线程
        public MyThread() {
        }

        public MyThread(String name) {
            super(name);
        }
        @Override
        public void run(){
            while (true){
                try {
                    sleep(1000); // 一秒的延迟
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                if (getName().equals("a")){ // 当是a进程的时候 产生随机字符串
                    queue.add(random.nextDouble() + "字符串");
                }
                else{
                    if (queue.isEmpty()){ // 没有字符串的时候
                        System.out.println("no msg"); // 打印报错
                    }
                    else
                    {
                        String poll = queue.lastElement();  // 返回队列的最后一个元素
                        queue.remove(queue.size() - 1); // 然后删除最后一个元素
                        System.out.println(poll);  // 打印队列
                    }
                }
            }

        }
    }
    public static void main(String[] args) {

        // 创建的两个线程
        MyThread a = new MyThread();
        a.setName("a"); // 设置线程名字
        MyThread b = new MyThread();
        b.setName("b");
        a.start();
        b.start();
    }
}

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