多线程面试题

有些事情是您在学术或培训班上没有学到的,经过几年的工作经验后才逐渐了解,然后您才意识到,这是我最想念的那几年,这是非常基本的。 了解多线程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

多线程面试题

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

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

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

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

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

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

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

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

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

  5. Java程序的运行原理及JVM的启动是多线程的吗?

    Java程序的运行原理及JVM的启动是多线程的吗? A:Java程序的运行原理 Java通过java命令会启动java虚拟机.启动JVM,等于启动了一个应用程序,也就是启动了一个进程. 该进程会自动启 ...

  6. 定时执行java程序_如何让Java程序定时运行

    由于项目开发的需要,必须实现让一个Java程 序定时运行.比如,我的项目中,有一个网络蜘蛛,需要从互联网上抓取数据,与其配合,有另一个程序来对新抓取的页面进行索引的创建,由于数据源更新频率不 高,我们 ...

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

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

  8. java 多线程的好处_线程多有什么好处?使用多线程的优势

    线程多有什么好处?提高CPU的利用率,更好地利用系统资源,使用Monitor类可以同步静态/实例化的方法的全部代码或者部分代码段,使用不同的同步类创建自己的同步机制. 多线程指从软件或者硬件上实现多个 ...

  9. java线程代码实现_Java 多线程代码实现讲解

    作为一个完全面向对象的语言,Java提供了类 java.lang.Thread 来方便多线程编程,这个类提供了大量的方法来方便我们控制自己的各个线程.那么如何提供给 Java 我们要线程执行的代码呢? ...

最新文章

  1. JavaScript总结01
  2. Device is not certified by Google
  3. Quartz关闭超时订单
  4. MySQL自增字段并发插入导致死锁
  5. 关键词词云怎么做_制作CVPR 热词云(并爬取pdf地址 名称)
  6. C# 该行已经属于还有一个表 的解决方法
  7. android listview item 错位,Android BaseAdapter和ViewHolder 优化 解决ListView的item抢焦点问题和item错乱问题...
  8. 226. Invert Binary Tree 1
  9. 在数学中10!代表10的阶乘。既代表1*2*3*4....*10; * 现在要求编程求出8!。
  10. 7000 字,四年多 Java 的 BAT 面经分享!
  11. MySQL存储引擎:MyISAM InnoDB
  12. 一些不起眼但非常有用的 Vim 命令
  13. excel小写转大写公式_Word如何一键转PPT/Excel,来看看用对的方式操作office有多方便...
  14. can接收id过滤linux,linux – 很大程度上被candump(SocketCAN)ID过滤功能搞糊涂了
  15. NI VISION视觉安装
  16. EXCEL 分组取前十的数据
  17. 非线性优化汇总——Matlab优化工具箱(持续更新中)
  18. 绿茶集团在港上市申请再失效:王勤松夫妇为实控人,翻台率不及格
  19. ren域名有价值吗?值不值得投资?ren域名的应用范围有哪些?
  20. JAVA基础--java简单知识04(类与对象,封装,继承,多态)

热门文章

  1. ReentrantLock 实现原理
  2. 对Web页面元素的绝对唯一引用方法
  3. 如何做EL表达式能调用的函数-小例子(转)
  4. Android学习笔记18-自定义Seekbar拖动条式样
  5. JVM中的Stack和Heap1
  6. 按键精灵-Sub和Function
  7. linux ssh scp 使用跳板机 访问 远程服务器
  8. linux 用户身份与进程权限
  9. golang strings Replace 字符串替换
  10. linux c 指针 内存 泄漏几种情况