Java基础之多线程Stack类

使用Stack类实现生产者与消费者

 1 package com.imooc.demo;
 2
 3 import java.util.Random;
 4 import java.util.Stack;
 5 //生产者
 6 public class StackOOPS implements Runnable{
 7
 8     private Stack<Integer> stack;
 9     public StackOOPS(Stack<Integer> stack){
10         this.stack = stack;
11     }
12
13     @Override
14     public void run() {
15         Random random = new Random();
16         while (true){
17             if (stack.size() < 6){
18                 int num = random.nextInt();
19                 stack.push(num);
20                 System.out.println(Thread.currentThread().getName()+"生产了:"+num);
21             }else{
22                 try {
23                     Thread.sleep(100);
24                 } catch (InterruptedException e) {
25                     e.printStackTrace();
26                 }
27             }
28         }
29     }
30 }
 1 package com.imooc.demo;
 2
 3 import java.util.Stack;
 4 //消费者
 5 public class StackOOPC implements Runnable {
 6
 7     private Stack<Integer> stack;
 8
 9     public StackOOPC(Stack<Integer> stack){
10         this.stack = stack;
11     }
12     @Override
13     public void run() {
14         while (true){
15             if (stack.size() > 0){
16                 Integer num = stack.pop();
17                 System.out.println(Thread.currentThread().getName()+"消费了:"+num);
18             }else{
19                 try {
20                     Thread.sleep(200);
21                 } catch (InterruptedException e) {
22                     e.printStackTrace();
23                 }
24             }
25         }
26     }
27 }
 1 package com.imooc.demo;
 2
 3 import java.util.Stack;
 4
 5 /**
 6  * Stack类的使用
 7  */
 8 public class StackTest {
 9     public static void main(String[] args) {
10         Stack<Integer> s = new Stack<>();
11         StackOOPS stackOOPS = new StackOOPS(s);
12         StackOOPC stackOOPC = new StackOOPC(s);
13         //开启两个生产者
14         new Thread(stackOOPC).start();
15         new Thread(stackOOPS).start();
16         //开启一个消费者
17         new Thread(stackOOPS).start();
18     }
19 }

原文地址:https://www.cnblogs.com/in-the-game-of-thrones/p/11322906.html

时间: 2024-10-08 12:52:10

Java基础之多线程Stack类的相关文章

Java基础知识:面向对象&类图

类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称.在系统中,每个类都具有一定的职责,职责指的是类要完成什么样的功能,要承担什么样的义务.一个类可以有多种职责,设计得好的类一般只有一种职责.在定义类的时候,将类的职责分解成为类的属性和操作(即方法).类的属性即类的数据职责,类的操作即类的行为职责.设计类是面向对象设计中最重要的组成部分,也是最复杂和最耗时的部分. 1.面向对象特性 1)抽象 2)继承 3)封装 4)多态 2.类图: 在软件系统

java基础学习总结——Object类

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——Object类 一.Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较方便,它提供了一个最根上的类,相当于所有的类都是从这个类继承,这个类就叫Object.所以Object类是所有JAVA类的根基类,是所有JAVA类的老祖宗.

java基础知识-对象和类

前言: 因为要准备Java面试,所有将java基础知识点重新复习一遍,主要笔记来源于菜鸟教程和java核心技术的书籍中,也有一些博客上的资料(这些只供我个人学习使用) Java 对象和类 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等. 类:类是一个模板,它描述一类对象的行为和状态. 下图中男孩女孩为类,而具体的每个人为该类的对象: 1.Java中的对象 现在让我们深入了解什么是对象.看看周围真实的世界,会发现身边有很多对象

黑马程序员——Java基础---集合框架工具类

黑马程序员——Java基础<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java为操作Set.List和Map提供了一系列工具类,主要有Collections和Arrays.这两个工具类的特点:类中的方法都是静态的,不需要创建对象,直接使用类名调用即可.Collections:是集合对象

java下的多线程操作工具类(原创)

因为毕业设计上需要将控制台的任务实时输出到界面上, 而且那是个Hadoop的mapreduce任务,一跑半个小时的节奏,所以需要用到多线程并随时读取返回的数据, 百度了没找到合适的方法,于是被逼无奈编写了这个十分简单的多线程操作工具类. 大概的功能就是可以执行一个特定的线程(线程必须调用本类的方法才能实现实时输出信息的功能),然后随时调用readResult方法就可以获取到结果集. 在毕业设计的应用上,就是创建一个工具类,然后让它自己去跑,根据taskId保存到session中,用ajax循环读

Java基础10:object类

Object类 这部分主要参考http://ihenu.iteye.com/blog/2233249 Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起.作为其他所有类的基类,Object具有哪些属性和行为,是Java语言设计背后的思维体现. Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入.Object类没有定义属性,一共有13个方法,13个方法之中并不是所有方法都是子类可访问的,一共有9个方法

【BigData】Java基础_多线程

所谓的多线程就像小吃街卖铜锅米线的老板,老板就好比一个操作系统,如果5个顾客同时去买米线,那么,此时老板就会同时准备好5个铜锅,然后同时放上水.调料.米线,同时煮5个人的米线,如果逐个煮的话,那么估计煮了2个人的米线,后面3人就来找老板退款了. 官方解释:多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术 在Java中实现多线程四部曲: (1)将需要用多线程方式执行的逻辑,写入一个runnable实现类中(run方法中): (2)创建出这个runnabl

I学霸官方免费教程二十七:Java基础教程之Arrays类

Arrays类 数组的一个工具类,提供了一些静态的方法,用于操作数组:不多说,直接上例子 实例: //声明包 package array; //导入包 //作用:告诉系统,ArraysDemo类中用到Arrays类时去java.util包下找Arrays类 import java.util.Arrays; /**  * 演示Arrays类的常用方法  * @author 学霸联盟 - 赵灿  */ public class ArraysDemo { public static void main

Java基础—API及Object类和String类

Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可. 1.Object类  Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.所有类在创建对象的时候,最终找的父类就是Object.   equals方法    equals方法,用于比较两个对象