java8多线程运行程序

有些事情是您在学术或培训班上没有学到的,经过几年的工作经验后才逐渐了解,然后才意识到,这是非常基本的事情,我为什么错过了这么多年。 了解多线程Java程序的执行方式就是其中之一。 您肯定已经听说过线程,如何启动线程,如何停止线程,诸如其独立的执行路径之类的定义,处理线程间通信的所有时髦库,但是在调试多线程Java程序时,您会斗争。

至少我可以从我的亲身经历中说出来。 在我看来,调试是真正的培训师,您将学到一个精妙的概念,并获得只有通过调试才能持续很长时间的理解。

在本文中,我将讨论有关任何程序执行的三个重要事项,而不仅仅是Java,线程,代码和数据。

一旦您对这三个函数如何协同工作有了很好的了解,您将更容易理解程序的执行方式,为什么某个错误只在某些时候出现,为什么某个特定的错误会一直出现以及为什么某个特定的错误确实存在?随机。

线程,代码和数据如何协同工作

什么是程序? 简而言之,这是一段代码,它被翻译成CPU的二进制指令。 CPU是执行那些指令的人,例如从内存中获取数据,添加数据,减去数据等。总之,您编写的是您的程序,即代码。

在同一程序的不同执行之间,数据是不同的。 这不仅意味着重新启动程序,还意味着一个处理周期,例如,对于电子交易应用程序而言,处理一个订单就是一次执行。 您可以在一分钟内处理成千上万的订单,并且每次迭代都会改变数据。

还有一点要注意的是,您可以在代码中创建线程,然后将它们并行运行并执行代码,这些代码在它们的run()方法内部编写。 要记住的关键是线程可以并行运行。

当Java程序启动时,将创建一个称为主线程的线程,该线程执行在main方法内部编写的代码,如果创建线程,则这些线程由主线程创建并启动,一旦启动,它们便开始执行编写的代码其
run()方法。


因此,如果您有10个线程来处理订单,它们将并行运行。 简而言之,线程执行代码,并传入数据。现在,我们将讨论三种不同类型的问题

1)问题,总是存在

2)问题,仅在某些时候出现,但与相同的输入内容一致

3)问题,这确实是随机的

问题一最有可能是由于错误的代码而引起的,也称为编程错误,例如访问程序的无效索引。
array ,在将其设置为null或什至在初始化之前访问Object的方法。 如您所知,它们很容易修复。

您只需要了解编程语言和API即可解决此错误。

第二个问题是数据而不是代码。 仅有时但总是带有相同的输入,可能是由于边界处理不正确,数据格式错误(例如订单)而没有某些字段,例如价格,数量等。

您的程序应始终以健壮的方式编写,以便在输入错误数据时不会崩溃。 影响只应与该订单有关,其余订单必须正确执行。

第三个问题很可能是由于多线程而引起的,多线程执行的顺序和交织导致争用条件或死锁 。 它们是随机的,因为它们仅在某些随机事件发生时才出现,例如,线程2在线程1之前获得CPU,从而锁定了错误的顺序。

请记住,线程调度程序和操作系统负责将CPU分配给线程,它们可以暂停它们,随时从它们中获取CPU,所有这些都可以创建一个独特的方案,从而暴露了多线程和同步问题。

您的代码从不依赖于线程等的顺序,它必须健壮才能在所有条件下完美运行。

简而言之,请记住线程使用给出的数据作为输入执行代码。 每个线程使用相同的代码,但使用不同的数据。 在调试问题时,请注意线程,代码和数据这三者。

感谢您到目前为止阅读本文。 如果您喜欢这篇文章,请与您的朋友和同事分享。 如果您有任何疑问或反馈,请留言。

翻译自: https://www.javacodegeeks.com/2019/03/multithreading-java-program-actually-run.html

java8多线程运行程序

java8多线程运行程序_线程,代码和数据–多线程Java程序实际运行的方式相关推荐

  1. 多线程面试题_线程魔术技巧:使用Java线程可以做的5件事

    多线程面试题 Java线程最鲜为人知的事实和用例是什么? 有些人喜欢爬山,有些人喜欢跳伞. 我,我喜欢Java. 我喜欢它的一件事是,您永不停止学习. 您每天使用的工具通常可以为您带来全新的面貌,以及 ...

  2. 如何分析java程序_如何利用 JConsole观察分析Java程序的运行,进行排错调优

    一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行.您可以轻松地使用 JCons ...

  3. java 任务栏程序_如何在任务栏显示java程序图标

    该代码实现了在系统右下角的任务栏中显示程序的图标,并且最小化程序后单击图标可以显示出来这个程序窗口 import java.awt.Color; import java.awt.Image; impo ...

  4. 应用FileInputStream类,编写应用程序,从磁盘上读取一个Java程序,并将源程序代码显示在屏幕上

    应用FileInputStream类,编写应用程序,从磁盘上读取一个Java程序,并将源程序代码显示在屏幕上. package p1;import java.io.*; public class FI ...

  5. 在一个Java版本上运行Eclipse IDE,但在另一个Java版本上运行

    Java™开发人员 (和其他Java开发人员变体)的Eclipse IDE本身就是用于构建Java应用程序的Java应用程序. 这种关系可能会让您的大脑有些奇怪. Eclipse IDE几乎完全用Ja ...

  6. 代写java Assignment作业、代做UML Class Diagram程序作业、代写代做java程序作业代做McMaster-Carr、代做CS5010 java...

    代写java Assignment作业.代做UML Class Diagram程序作业.代写代做java程序作业代做McMaster-Carr.代做CS5010 java ? Please push ...

  7. java传感器编程_JSensorReader 无线传感器网络环境,直接从节点读取 采集数据的java程序 Script 249万源代码下载- www.pudn.com...

    文件名称: JSensorReader下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 9946 KB 上传时间: 2015-12-29 下载次数: 0 详细说明 ...

  8. 多线程面试题_线程,代码和数据–多线程Java程序实际运行的方式

    多线程面试题 有些事情是您在学术或培训班上没有学到的,经过几年的工作经验后才逐渐了解,然后您才意识到,这是我最想念的那几年,这是非常基本的. 了解多线程Java程序的执行方式就是其中之一. 您肯定已经 ...

  9. 线程,代码和数据–多线程Java程序实际运行的方式

    有些事情是您在学术或培训班上没有学到的,经过几年的工作经验后才逐渐了解,然后才意识到,这是非常基本的事情,我为什么错过了这么多年. 了解多线程Java程序的执行方式就是其中之一. 您肯定已经听说过线程 ...

最新文章

  1. MySQL 高级 - 存储过程 - 函数
  2. HTTP/3 原理实战
  3. html文字简单动画效果,CSS3一个简单的按钮悬停波浪文本动画效果
  4. Linux下Web效力器架设攻略-1
  5. 直面最大挑战双11 阿里数据中台为商家带来确定性保障
  6. 五邑大学c语言期末考试题,五邑大学 c语言试卷.doc
  7. WEB安全基础-PHP+MySQL实践
  8. 创业几乎不要本钱,是创业圈内最大的谎言
  9. perl的USE和require
  10. 快手亮相第七届全球数字营销峰会,以全域内容营销驱动商业新增长
  11. 标准C语言基础知识1
  12. 被遗忘的Windows快捷键
  13. 今天,我们这么和霍金说再见
  14. 写的真好...很多姑娘爱高帅富,其实真正的原因是因为他们有质感,无论物质还是内心
  15. 贝叶斯分析好坏_经典Vs贝叶斯统计对点估计和线性回归理解
  16. Stata12 下载和安装
  17. 一键整理电脑桌面、文件夹—只需要20行python代码
  18. 期货短线量价分析与多空技巧
  19. (八)二阶张量与矩阵(一)
  20. 在linux ubuntu下下载运行虚幻5引擎

热门文章

  1. 牛客题霸 [数组中出现次数超过一半的数字] C++题解/答案
  2. L2-006 树的遍历
  3. 牛客网【每日一题】4月24日 子序列
  4. 一般图带权多重匹配(欧拉图+最小费用流)
  5. 【2019CSP-J 普及组题解】数字游戏(number),公交换乘(transfer),纪念品(souvenir),加工领奖(work) CSP普及游记
  6. CF819E:Mister B and Flight to the Moon(构造、归纳法)
  7. YBTOJ洛谷P4331:数字序列(左偏树)
  8. P5304-[GXOI/GZOI2019]旅行者【最短路】
  9. P6619-[省选联考2020A/B卷]冰火战士【树状数组二分】
  10. nssl1193-地主【dp】