java基础之多线程四:简单案例
多线程案例:
有一个包包的数量为100个,分别从实体店和官网进行售卖。
使用多线程的方式,分别打印实体店和官网卖出包包的信息。
分别统计官网和实体店各卖出了多少个包包
第一种方法 继承Thread类:
public static void main(String[] args) {
//两个线程 分别为官网和实体店
MyThread mt1 = new MyThread("官网");
MyThread mt2 = new MyThread("实体店");
mt1.start();
mt2.start();
}
public class MyThread extends Thread {
private static int count = ;
public MyThread() {
super();
}
public MyThread(String name) {
super(name);
}
@Override
public void run() {
int c = ;
while (true) {
synchronized (MyThread.class) {
if (count < ) {
break;
}
System.out.println(getName() + "卖出第" + ( - count--) + "个");
c++;
}
}
System.out.println(getName() + "共卖出" + c + "个");
}
}
第二种方法 实现Runnable接口:
public static void main(String[] args) {
MyRunnable mr = new MyRunnable();
Thread t1 = new Thread(mr,"官网");
Thread t2 = new Thread(mr,"实体店");
t1.start();
t2.start();
}
public class MyRunnable implements Runnable {
private int count = 100;
@Override
public void run() {
int c = 0;
while (true) {
synchronized (this) {
if (count < 1) {
break;
}
System.out.println(Thread.currentThread().getName() + "卖出第" + (101 - count--) + "个");
c++;
}
}
System.out.println(Thread.currentThread().getName() + "共卖出" + c + "个");
}
}
输出结果:
官网卖出第1个
官网卖出第2个
官网卖出第3个
官网卖出第4个
官网卖出第5个
实体店卖出第6个
实体店卖出第7个
实体店卖出第8个
实体店卖出第9个
...
实体店共卖出36个
官网共卖出64个
java基础之多线程四:简单案例的更多相关文章
- Java基础技术多线程与并发面试【笔记】
Java基础技术多线程与并发 什么是线程死锁? 死锁是指两个或两个以上的进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去,我们就可以称 ...
- Java基础-处理json字符串解析案例
Java基础-处理json字符串解析案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名开发人员,想必大家或多或少都有接触到XML文件,XML全称为“extensible ...
- Java基础-零拷贝技术应用案例
Java基础-零拷贝技术应用案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 零拷贝技术在Hadoop生态圈中很多组件得到应用,典型的比如kafka组件,它就很成功的应用了零拷贝 ...
- java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现
java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析 ...
- 关于java基础、多线程、JavaWeb基础、数据库、SSM、Springboot技术汇总
作者 : Stanley 罗昊 本人自行总结,纯手打,有疑问请在评论区留言 [转载请注明出处和署名,谢谢!] 一.java基础 1.多态有哪些体现形式? 重写.重载 2. Overriding的是什么 ...
- java基础知识(四)java内存机制
Java内存管理:深入Java内存区域 上面的文章对于java的内存管理机制讲的非常细致,在这里我们只是为了便于后面内容的理解,对java内存机制做一个简单的梳理. 程序计数器:当前线程所执行的字节码 ...
- Java基础之多线程篇(线程创建与终止、互斥、通信、本地变量)
线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public ...
- Java基础之多线程详细分析
在了解多线程之前,先来了解一下进程与线程之间的关系. 进程和线程: 进程是指在系统中正在执行的一个程序,每个进程之间是独立的. 线程是进程的一个基本执行单元.一个进程要想执行任务,必须得有线程(每1个 ...
- java 基础知识(四)
自己写一个简单的Map 清浅池塘 程序员,专栏:Java那些事儿唯一作者,咨询前请先点详细资料 130 人赞同了该文章 许多许多年以前,在自学Java的时候,笔者曾经写过一个简单的Map,当年很有 ...
随机推荐
- BloomFilter布隆过滤器使用
从上一篇可以得知,BloomFilter的关键在于hash算法的设定和bit数组的大小确定,通过权衡得到一个错误概率可以接受的结果. 算法比较复杂,也不是我们研究的范畴,我们直接使用已有的实现. go ...
- git clone all branch and create a empty branch
/******************************************************************** * git clone all branch and cre ...
- HDU - 3374:String Problem (最小表示法模板题)
Give you a string with length N, you can generate N strings by left shifts. For example let consider ...
- 如何将u盘、移动硬盘转化为活动分区--绝招
https://jingyan.baidu.com/article/e75057f2a6a18aebc91a893e.html
- System.Web.HttpRequestValidationException: 从客户端(dbFlag="<soap:Envelope xmlns...")中检测到有潜在危险的 Request.Form 值。
System.Web.HttpRequestValidationException: 从客户端(dbFlag="<soap:Envelope xmlns...")中检测到有潜 ...
- 关于djangoadmin的一个博客
http://www.cnblogs.com/linxiyue/category/569717.html
- k8s api server ha 连接配置问题
常见的lb 负载有硬件的f5 big-ip ,同时对于互联网公司大家常用的是nginx haproxy 了解k8s 集群高可用的都知道 api server 是无状态的(etcd 解决了),但是 ...
- F4NNIU 学习目录 (2018-08-22)
F4NNIU 学习目录 语言 C 语言 C 语言程序设计进阶 在线刷题 https://leetcode-cn.com/problemset/all/ 工具 Git 版本管理 在线教程 在线教程
- 使用 Git 来备份 MySQL 数据库
使用 Git 来备份 MySQL 数据库 使用 mysqldump 导出 sql 文件 使用 git pull 提交到仓库 将脚本加入任务管理 mysqldump 导出时需要以下参数. --skip- ...
- bzoj 3295 (洛谷3157、3193) [Cqoi2011]动态逆序对——树套树 / CDQ分治
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3295 题目--洛谷3157:https://www.luogu.org/problemnew ...