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,当年很有 ...
随机推荐
- maven install时自动施行单元测试
maven install时自动执行单元测试 1.maven-surefire-plugin简介 Maven本身并不是一个单元测试框架,它只是在构建执行到特定生命周期阶段的时候,通过插件来执行JUni ...
- Spring-Kafka 2.0.0发送API翻译
Kafka Template–2.2.0 api KafkaTemplate KafkaTemplate这个类包装了个生产者,来提供方便的发送数据到kafka的topic里面. 同步和异步的方法都有, ...
- Angular提示文件不是一个有效的模块
ERROR in src/app/app.component.ts(2,23): error TS2306: File '/home/jerry/angular/todo/src/app/model. ...
- 分布式缓存之memcached--命令测试
1. 启动Memcache常用参数 -p <num> 设置TCP端口号(默认设置为: ) -U <num> UDP监听端口(默认: , 时关闭) -l <ip_addr& ...
- python3.x 函数的参数
2016-08-09 15:06:18 位置参数 调用函数时,参数按照位置依次传递给函数 def show(a1,a2,a3,a4): print(a1,a2,a3,a4) show('s','h' ...
- rabbitmq java
package com.enniu.rabbitmq; import com.rabbitmq.client.AMQP; import com.rabbitmq.client.AMQP.BasicPr ...
- matlab_移动文件和复制文件
clear clc cd('C:\Users\xx\Desktop\learning'); % 设置当前目录 % 此时learning文件夹中有:文件夹x, 文件夹y, 文件a.png, 文件b.pn ...
- Linux修改数据库的访问权限
以下方法可以帮助你解决这个问题了,下面的语句功能是,建立一个用户为monitor密码admin权限为和root一样.允许任意主机连接.这样你可以方便进行在本地远程操作数据库了. CREATE USER ...
- (转)android - anim translate中 fromXDelta、toXDelta、fromYDelta、toXDelta属性
2012-03-23 15:51 16144人阅读 评论(5) 收藏 举报 android <set xmlns:android="http://schemas.android.com ...
- ubuntu下网卡eth1如何修改为eth0
正常来说,Linux在识别网卡时第一张会是eth0,第二张才是eth1.有时候我们使用虚拟机克隆技术后网卡的信息就会改变,新克隆出来的虚拟主机网卡名字可能变为eth1.无论我们怎么修改都无法改变,这就 ...