第一种情况:

public class Main {

public static void main(String args[]) {

Thread t = new Thread() {

public void run() {

pong();

}

};

t.run();

System.out.println("ping");

}

static void pong() {

System.out.println("pong");

}

}

输出:pingpong 解释:调用run()方法,整个程序只有一个线程,主线程,run()是Runnable接口中定义的一个方法,是为了让客户程序员在这个方法里写自己的功能代码的。直接调用和普通的类调用自己的成员方法是没有任何区别的。

第二种情况

public static void main(String args[]) {

Thread t = new Thread() {

public void run() {

pong();

}

};

t.start();

System.out.println("ping");

}

static void pong() {

System.out.println("pong");

}

}

输出:pongping,解释:用start()方法之后,程序就会多出一个线程,设定新线程进入 “就绪” 状态,等待 CPU 调度之后才会执行

这时才有和主线程争cpu。

而下一个 System.out.print() 几乎(概率大于99%)可以认为是立即接着执行的。

所以,最终效果就是,几乎都是 pongping。

第三种情况

public class Test02 {

public static void main(String args[]) throws InterruptedException {

Thread mThread = Thread.currentThread();

Thread t = new Thread() {

public void run() {

try {

Thread.sleep(250);// 1.  这句话注释掉和不注释掉的区别,或者更改sleep里面时间的区别

} catch (InterruptedException e) {

e.printStackTrace();

}

pong();

}

};

t.start();// 换成t.run(),观察不同一般在笔试题中是陷阱,混淆start

mThread.sleep(250);// 2.  这句话注释掉和不注释掉的区别,或者更改sleep里面时间的区别

System.out.println("ping");

}

static void pong() {

System.out.println("pong");

}

}

输出pingpong和pongping都有可能

java pingpong_面试题。线程pingpong的输出问题相关推荐

  1. java 线程ping pong_面试题。线程pingpong的输出问题

    第一种情况: public class Main { public static void main(String args[]) { Thread t = new Thread() { public ...

  2. 黑马Java热门面试题线程(三)

    目录: (1)线程的状态? (2) start 和 run 的区别? (3)为什么使用线程池,优势是什么? (4)线程池工作原理? (5)线程池重要参数有哪些? (6)线程池如何使用?线程池核心线程数 ...

  3. 阿里巴巴java方向笔试题(出自牛客网)

    阿里巴巴java方向笔试题 1.以下程序输出结果是____ class A {public:A ():m_iVal(0){test();}virtual void func() { std::cout ...

  4. JAVA中的线程安全与非线程安全,java面试题,java高级笔试题

    写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. 转自 ...

  5. Java坑人面试题系列: 线程/线程池(高级难度)

    ExecutorService 接口及相关API细节详解. Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/qu ...

  6. Java多线程:用三个线程控制循环输出10次ABC

    题目:有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C,要求, 同时启动三个线程, 按顺序输出ABC, 循环10次. 解题思路:要按顺序输出ABC, 循环10次,就要控制三个线程同 ...

  7. 一道面试题:三个线程循环有序输出10次ABCABC...

    面试遇到的一道面试题:三个线程循环有序输出10次ABCABC... 解决思路:使用synchronized,wait和notifyAll控制线程同步 package com.myj.test.thre ...

  8. 字节跳动mysql面试题_刚面完的字节跳动java研发面试题整理(含答案):线程+MySQL+Spring+JVM...

    点关注,不迷路:持续更新Java相关技术及资讯!!! 为什么要用线程池那先要明白什么是线程池 线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建 ...

  9. Java多线程面试题之如何让主线程等子线程执行完之后再执行

    问题描述 现在有一个主线程X,和两个子线程A和B,A和B之间没有依赖关系且两者的执行时间不确定,现在要求如下: 1:不限制A和B执行顺序的 2:主线程X需要在子线程A和B执行完成之后再执行 方案1 1 ...

最新文章

  1. 高颜值的神经网络可视化工具:3D、彩色、可定制,还能可视化参数重要性
  2. Selenium高亮页面对象
  3. Material组件之MaterialApp、Scaffold、AppBar学习笔记
  4. mysql无法建立连接_【MySql】mysql无法建立连接或建立连接失败原因分析
  5. K8S常见错误、原因及处理方法
  6. curl 的用法指南
  7. C# Tailor Your Application by Building a Custom Forms Designer with .NET
  8. Matplotlib常用命令
  9. Android内存优化2 了解java内存分配 2
  10. 机器学习基础:K近邻算法(Machine Learning Fundamentals: KNN)
  11. TCP 粘包/拆包说明 及 异常案例
  12. Win11繁体中文字体显示不全如何解决?
  13. 教程 参数设置_AI全自动剪辑软件安装教程,参数设置与使用注意事项
  14. 计算机专业英语高等教育出版社2013版
  15. java微信公众号百度地图,微信公众号集成百度地图api,实现收货地址选择
  16. ie地址栏不能识别中文参数(google浏览器是正常的)
  17. pathon和c语言的区别
  18. 《数据挖掘》学习框架
  19. Python xlrd读取、处理excel日期类型
  20. MySQL数据清理有技巧,这么破

热门文章

  1. 肖修鹏:十年磨一剑,成就靠谱职业经理人
  2. 云解析DNS能为你做什么?
  3. K8S环境中NAS卷添加noresvport方法
  4. HSF/Dubbo序列化时的LocalDateTime, Instant的性能问题
  5. 基于智能家居场景的POALRDB性能体验
  6. 理论与实践:如何从Hadoop迁移到MaxCompute
  7. 阿里AI界的新伙伴,1秒钟自动生成20000条文案
  8. 设计方案,拿来吧你!
  9. Mendix:低代码与无代码的异同点与用例
  10. 三探云原生全景图,这次聊聊运行时层