【转】这篇文章主要介绍了java多线程编程实例,分享了几则多线程的实例代码,具有一定参考价值,加深多线程编程的理解还是很有帮助的,需要的朋友可以参考下。

1.三个售票窗口同时出售20张票
程序分析:
    (1)票数要使用同一个静态值
    (2)为保证不会出现卖出同一个票数,要java多线程同步锁。
设计思路:
    (1)创建一个站台类Station,继承Thread,重写run方法,在run方法里面执行售票操作!售票要使用同步锁:即有一个站台卖这张票时,其他站台要等这张票卖完!
    (2)创建主方法调用类
(一)创建一个站台类,继承Thread

(二)创建主方法调用类

程序运行结果:

窗口1卖出了第20张票
窗口2卖出了第19张票
窗口3卖出了第18张票
窗口3卖出了第17张票
窗口1卖出了第16张票
窗口2卖出了第15张票
窗口3卖出了第14张票
窗口1卖出了第13张票
窗口2卖出了第12张票
窗口2卖出了第11张票
窗口1卖出了第10张票
窗口3卖出了第9张票
窗口3卖出了第8张票
窗口1卖出了第7张票
窗口2卖出了第6张票
窗口3卖出了第5张票
窗口1卖出了第4张票
窗口2卖出了第3张票
窗口3卖出了第2张票
窗口1卖出了第1张票
票卖完了
可以看到票数是不会有错的!

2.两个人AB通过一个账户A在柜台取钱和B在ATM机取钱!
程序分析:
        钱的数量要设置成一个静态的变量,两个人要取的同一个对象值。
(一)创建一个Bank类

(二)创建一个PersonA类

(三)创建一个PersonB类

(四)创建主方法的调用类

运行结果:

可以看到取完就停止运行了。
3.龟兔赛跑问题
龟兔赛跑:2000米 
要求:
    (1)兔子每 0.1 秒 5 米的速度,每跑20米休息1秒;
    (2)乌龟每 0.1 秒跑 2 米,不休息;
    (3)其中一个跑到终点后另一个不跑了!
程序设计思路:
    (1)创建一个Animal动物类,继承Thread,编写一个running抽象方法,重写run方法,把running方法在run方法里面调用。
    (2)创建Rabbit兔子类和Tortoise乌龟类,继承动物类
    (3)两个子类重写running方法
    (4)本题的第3个要求涉及到线程回调。需要在动物类创建一个回调接口,创建一个回调对象。
(一)创建Animal动物类

(二)创建Rabbit兔子类

(三)创建Tortoise乌龟类

(四)创建一个让动物线程停止的类,这里要实现回调接口

(五)创建一个主方法调用类

运行结果:

4. 线程示例总结

(1)代码块锁是一个防止数据发生错误的一个重要手段;
    (2)对象的统一性是非常重要的,这要想到对象的传入问题,要操作的对象只能new一次,其他的操作都是对这个传入的对象进行的,才能保证数据一致性,完整性和正确性。
————————————————
版权声明:本文为CSDN博主「延陵缥缈」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34996727/article/details/80416277

java多线程编程实例的更多相关文章

  1. Java多线程编程核心技术---学习分享

    继承Thread类实现多线程 public class MyThread extends Thread { @Override public void run() { super.run(); Sys ...

  2. Java多线程编程核心技术---对象及变量的并发访问(二)

    数据类型String的常量池特性 在JVM中具有String常量池缓存的功能. public class Service { public static void print(String str){ ...

  3. Java多线程编程详解

    转自:http://programming.iteye.com/blog/158568 线程的同步 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题.Ja ...

  4. Java多线程编程(二)

    在 Java多线程编程(一) 中的多线程并没有返回值,本文将介绍带返回值的多线程. 要想有返回值,则需要实现新的接口Callable而不再是Runnable接口,实现的方法也改为call()方法,执行 ...

  5. Java多线程编程中Future模式的详解

    Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Futu ...

  6. Java多线程编程核心技术

    Java多线程编程核心技术 这本书有利于对Java多线程API的理解,但不容易从中总结规律. JDK文档 1. Thread类 部分源码: public class Thread implements ...

  7. 《Java多线程编程核心技术》推荐

    写这篇博客主要是给猿友们推荐一本书<Java多线程编程核心技术>. 之所以要推荐它,主要因为这本书写得十分通俗易懂,以实例贯穿整本书,使得原本抽象的概念,理解起来不再抽象. 只要你有一点点 ...

  8. Java多线程编程核心技术(三)多线程通信

    线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体.线程间的通信就是成为整体的必用方案之一,可以说,使线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时 ...

  9. Java多线程编程核心技术(二)对象及变量的并发访问

    本文主要介绍Java多线程中的同步,也就是如何在Java语言中写出线程安全的程序,如何在Java语言中解决非线程安全的相关问题.阅读本文应该着重掌握如下技术点: synchronized对象监视器为O ...

随机推荐

  1. LintCode笔记 - 8. 旋转字符串

    这一题相对简单,但是代码质量可能不是很好,我分享一下我的做题笔记以及做题过程给各位欣赏,有什么不足望各位大佬指出来 原题目,各位小伙伴也可以试着做一下 . 旋转字符串 中文English 给定一个字符 ...

  2. Jenkins+tomcat自动发布的热部署/重启及遇到的坑解决办法

    一.背景 公司的项目一直手动maven打包.上传服务器.关闭/开启tomcat,整个流程下来耗时耗力,虽然可以将所有流程通过shell脚本一次性解决,但如果可以通过idea的Jenkins插件一键自动 ...

  3. 数据可视化之powerBI技巧(二十一)简单三个步骤,轻松管理你的Power BI度量值

    最近碰到几个星友的问题,都是问我之前分享的源文件是如何把度量值分门别类放到不同的文件夹中的,就像这样, 其实在之前的文章中也曾提及过做法,这里再详细说一下制作步骤: 01 | 新建一个空表 点击菜单栏 ...

  4. 数据可视化之PowerQuery篇(十一)使用Power BI进行动态帕累托分析

    https://zhuanlan.zhihu.com/p/57763423 上篇文章介绍了帕累托图的用处以及如何制作一个简单的帕累托图,在 PowerBI 中可以很方便的生成,但若仅止于此,并不足以体 ...

  5. 阿里面试官:这些软件测试面试题都答对了,I want you!

    [ 你悄悄来,请记得带走一丝云彩 ] 测试岗必知必会 01请描述如何划分缺陷与错误严重性和优先级别? 给软件缺陷与错误划分严重性和优先级的通用原则: 1. 表示软件缺陷所造成的危害和恶劣程度. 2. ...

  6. Oracle DataGuard主库丢失归档日志后备库的RMAN增量恢复一例

    第一部分  问题描述和环境状态确认 ----1. 问题场景 Oracle DataGuard主库丢失archivelog,如何不重建备库完成同步? 在Oracle DataGuard主从同步过程中可能 ...

  7. Java应用服务器之tomcat基础配置(二)

    前文我们聊了下tomcat的配置文件相关格式和组件简介以及webapp目录结构,manger部署和host managera部署,回顾请参考https://www.cnblogs.com/qiuhom ...

  8. Ubuntu安装Redis过程完整笔记

    在阿里云与百度云均已经安装成功~~ 下载文件 切换路径设置下载存放地址 cd /home 下载安装包(http://download.redis.io/releases建议下载最新稳定版本) sudo ...

  9. javascript兼容问题 : let降级到var 遇到的闭包问题的解决方法

    我用  for(let x in y) 循环一个图片元素数组. for (let x in arr) { arr[x].onload = function(){ /* ... */ } } 这样写是没 ...

  10. 在 vue 中使用 WebSocket

    <template> <div class="hello"> <h1>{{ msg }}</h1> <h1>{{ res ...