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