要求:一个火车站,三个售票员卖出100张票

1.通过继承Thread类实现

实现思路:建立ThreadTest类继承Thread并建立三个线程卖100张票

public class ThreadTest extends Thread {
private int i = 100;
public void run() {
while(true){
if(i>0) {
System.out.println(Thread.currentThread().getName() + "正在售出第" + i-- + "张票");
}
}
} public static void main(String[] args){
ThreadTest th = new ThreadTest();
new Thread(th).start();
new Thread(th).start();
new Thread(th).start();
}
}

体会:三个线程之间无序卖票,且线程之间无干扰。

2.通过实现Runnable接口达到要求

实现思路:建立ThreadTest类实现Runnable接口并建立一个对象的三个线程卖100张票

public class ThreadTest implements Runnable {
private int i = 100;
public void run() {
while(true){
if(i>0) {
System.out.println(Thread.currentThread().getName() + "正在售出第" + i-- + "张票");
}
}
} public static void main(String[] args){
ThreadTest th = new ThreadTest();
new Thread(th).start();
new Thread(th).start();
new Thread(th).start();
}
}

个人体会:三个线程共同卖出100张票,线程之间无序执行,th就相当于一个火车站,然后三个售票员卖100张票

拓展:三个火车站共同卖出100张票

思路:建立三个ThreadTest类的对象当做三个火车站,每个火车站一个售票员,把票变为静态属性

public class ThreadTest extends Thread {
static int i = 100;
public void run() {
while(true){
if(i>0) {
System.out.println(Thread.currentThread().getName() + "正在售出第" + i-- + "张票");
}
}
} public static void main(String[] args){
ThreadTest th1 = new ThreadTest();
new Thread(th1).start();//一火车站一售票员
ThreadTest th2 = new ThreadTest();
new Thread(th2).start();
ThreadTest th3 = new ThreadTest();
new Thread(th3).start();
}
}

总结:一个ThreadTest类的对象就是一个火车站,一个进程就相当于一个售票员。。。

最新文章

  1. [AlwaysOn Availability Groups]AlwaysOn Ring Buffers
  2. C#实现快速排序
  3. Masonry 创建Button的简单使用
  4. c# 正则表达式 匹配中括号&颜色过滤
  5. js 函数定义三种方式
  6. LeetCode Compare Version Numbers
  7. Adobe Flash CC 安装报错的解决办法
  8. 1、ViewModel类的构建和INoyifyPropertyChanged的应用
  9. 协同办公平台Worktile体验分享(转)
  10. 模拟美萍加密狗--Rockey2虚拟狗(三)
  11. 给table加边框的两种方法
  12. php 与redis 结合 使用predis
  13. NameError: name 'messagebox' is not defined 错误处理
  14. python交互的几种方式
  15. (实用)Linux下安装JDK和Eclipse
  16. Ucloud云主机无法yum安装处理办法
  17. 解决nodejs运行程序卡死之后,程序后台运行的问题
  18. iOS 折线图、柱状图的简单实现
  19. python操作mysql(pymysql + sqlalchemy)
  20. winform多线程调用控件

热门文章

  1. 【原创】ABAP根据文件路径获取文件所在目录
  2. 使用Arcgis Pro 发布矢量切片
  3. SYN4104型 数字网同步时钟
  4. Laravel --- Laravel 5.3 队列使用方法
  5. 不一样的go语言-玩转语法之二
  6. spring 5.x 系列第22篇 —— spring 定时任务 (代码配置方式)
  7. 新补充 JSSSS
  8. 渐进式web应用开发---service worker 原理及介绍(一)
  9. SQL经典练习题50--mysql
  10. 学习 GitHub 有什么好处?