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

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

前言:该题目是网上寻找的一个比较好的,多线程的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();
    }
}

运行结果:

相关文章
|
8月前
|
存储 缓存 Java
9.队列:生产消费模式及线程池的运用
9.队列:生产消费模式及线程池的运用
65 0
|
11天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
6月前
|
存储 设计模式 监控
Java面试题:如何在不牺牲性能的前提下,实现一个线程安全的单例模式?如何在生产者-消费者模式中平衡生产和消费的速度?Java内存模型规定了变量在内存中的存储和线程间的交互规则
Java面试题:如何在不牺牲性能的前提下,实现一个线程安全的单例模式?如何在生产者-消费者模式中平衡生产和消费的速度?Java内存模型规定了变量在内存中的存储和线程间的交互规则
55 0
|
7月前
|
安全 Linux 数据安全/隐私保护
【linux】线程同步和生产消费者模型
【linux】线程同步和生产消费者模型
46 0
|
8月前
|
监控 Java 中间件
8 个线程池最佳实践和坑!使用不当直接生产事故!!
8 个线程池最佳实践和坑!使用不当直接生产事故!!
260 0
|
供应链 算法 Linux
Linux系统编程6(线程互斥,锁,同步,生产消费模型)
Linux系统编程6(线程互斥,锁,同步,生产消费模型)
317 2
|
监控 Java 中间件
8 个线程池最佳实践和坑!使用不当直接生产事故!
你好,我是 Guide。这篇文章我会简单总结一下我了解的使用线程池的时候应该注意的坑以及一些优秀的实践。拿来即用,美滋滋!
|
Java
第二季:9.线程池用过吗?生产上你如何设置合理参数【Java面试题】
第二季:9.线程池用过吗?生产上你如何设置合理参数【Java面试题】
119 0
|
存储 供应链 安全
【Linux】多线程02 --- 线程的同步互斥问题及生产消费模型
【Linux】多线程02 --- 线程的同步互斥问题及生产消费模型
130 0
|
存储 供应链 Linux
【Linux】多线程 --- 线程同步与互斥+生产消费模型-2
【Linux】多线程 --- 线程同步与互斥+生产消费模型-2