首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >生产与消费(多线程练习题)

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

作者头像
GeekLiHua
发布2025-01-21 14:30:22
发布2025-01-21 14:30:22
1220
举报
文章被收录于专栏:JavaJava

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

提交代码

代码语言:javascript
复制
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();
    }
}

运行结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档