多线程案例:

有一个包包的数量为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基础之多线程四:简单案例的更多相关文章

  1. Java基础技术多线程与并发面试【笔记】

    Java基础技术多线程与并发 什么是线程死锁? ​死锁是指两个或两个以上的进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去,我们就可以称 ...

  2. Java基础-处理json字符串解析案例

    Java基础-处理json字符串解析案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名开发人员,想必大家或多或少都有接触到XML文件,XML全称为“extensible ...

  3. Java基础-零拷贝技术应用案例

    Java基础-零拷贝技术应用案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 零拷贝技术在Hadoop生态圈中很多组件得到应用,典型的比如kafka组件,它就很成功的应用了零拷贝 ...

  4. java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现

    java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析 ...

  5. 关于java基础、多线程、JavaWeb基础、数据库、SSM、Springboot技术汇总

    作者 : Stanley 罗昊 本人自行总结,纯手打,有疑问请在评论区留言 [转载请注明出处和署名,谢谢!] 一.java基础 1.多态有哪些体现形式? 重写.重载 2. Overriding的是什么 ...

  6. java基础知识(四)java内存机制

    Java内存管理:深入Java内存区域 上面的文章对于java的内存管理机制讲的非常细致,在这里我们只是为了便于后面内容的理解,对java内存机制做一个简单的梳理. 程序计数器:当前线程所执行的字节码 ...

  7. Java基础之多线程篇(线程创建与终止、互斥、通信、本地变量)

    线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public ...

  8. Java基础之多线程详细分析

    在了解多线程之前,先来了解一下进程与线程之间的关系. 进程和线程: 进程是指在系统中正在执行的一个程序,每个进程之间是独立的. 线程是进程的一个基本执行单元.一个进程要想执行任务,必须得有线程(每1个 ...

  9. java 基础知识(四)

    自己写一个简单的Map 清浅池塘 程序员,专栏:Java那些事儿唯一作者,咨询前请先点详细资料   130 人赞同了该文章 许多许多年以前,在自学Java的时候,笔者曾经写过一个简单的Map,当年很有 ...

随机推荐

  1. BloomFilter布隆过滤器使用

    从上一篇可以得知,BloomFilter的关键在于hash算法的设定和bit数组的大小确定,通过权衡得到一个错误概率可以接受的结果. 算法比较复杂,也不是我们研究的范畴,我们直接使用已有的实现. go ...

  2. git clone all branch and create a empty branch

    /******************************************************************** * git clone all branch and cre ...

  3. HDU - 3374:String Problem (最小表示法模板题)

    Give you a string with length N, you can generate N strings by left shifts. For example let consider ...

  4. 如何将u盘、移动硬盘转化为活动分区--绝招

    https://jingyan.baidu.com/article/e75057f2a6a18aebc91a893e.html

  5. System.Web.HttpRequestValidationException: 从客户端(dbFlag=&quot;&lt;soap:Envelope xmlns...&quot;)中检测到有潜在危险的 Request.Form 值。

    System.Web.HttpRequestValidationException: 从客户端(dbFlag="<soap:Envelope xmlns...")中检测到有潜 ...

  6. 关于djangoadmin的一个博客

    http://www.cnblogs.com/linxiyue/category/569717.html

  7. k8s api server ha 连接配置问题

    常见的lb 负载有硬件的f5 big-ip  ,同时对于互联网公司大家常用的是nginx  haproxy 了解k8s 集群高可用的都知道 api server  是无状态的(etcd 解决了),但是 ...

  8. F4NNIU 学习目录 (2018-08-22)

    F4NNIU 学习目录 语言 C 语言 C 语言程序设计进阶 在线刷题 https://leetcode-cn.com/problemset/all/ 工具 Git 版本管理 在线教程 在线教程

  9. 使用 Git 来备份 MySQL 数据库

    使用 Git 来备份 MySQL 数据库 使用 mysqldump 导出 sql 文件 使用 git pull 提交到仓库 将脚本加入任务管理 mysqldump 导出时需要以下参数. --skip- ...

  10. bzoj 3295 (洛谷3157、3193) [Cqoi2011]动态逆序对——树套树 / CDQ分治

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3295 题目--洛谷3157:https://www.luogu.org/problemnew ...