java pingpong_面试题。线程pingpong的输出问题
第一种情况:
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的输出问题相关推荐
- java 线程ping pong_面试题。线程pingpong的输出问题
第一种情况: public class Main { public static void main(String args[]) { Thread t = new Thread() { public ...
- 黑马Java热门面试题线程(三)
目录: (1)线程的状态? (2) start 和 run 的区别? (3)为什么使用线程池,优势是什么? (4)线程池工作原理? (5)线程池重要参数有哪些? (6)线程池如何使用?线程池核心线程数 ...
- 阿里巴巴java方向笔试题(出自牛客网)
阿里巴巴java方向笔试题 1.以下程序输出结果是____ class A {public:A ():m_iVal(0){test();}virtual void func() { std::cout ...
- JAVA中的线程安全与非线程安全,java面试题,java高级笔试题
写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. 转自 ...
- Java坑人面试题系列: 线程/线程池(高级难度)
ExecutorService 接口及相关API细节详解. Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/qu ...
- Java多线程:用三个线程控制循环输出10次ABC
题目:有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C,要求, 同时启动三个线程, 按顺序输出ABC, 循环10次. 解题思路:要按顺序输出ABC, 循环10次,就要控制三个线程同 ...
- 一道面试题:三个线程循环有序输出10次ABCABC...
面试遇到的一道面试题:三个线程循环有序输出10次ABCABC... 解决思路:使用synchronized,wait和notifyAll控制线程同步 package com.myj.test.thre ...
- 字节跳动mysql面试题_刚面完的字节跳动java研发面试题整理(含答案):线程+MySQL+Spring+JVM...
点关注,不迷路:持续更新Java相关技术及资讯!!! 为什么要用线程池那先要明白什么是线程池 线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建 ...
- Java多线程面试题之如何让主线程等子线程执行完之后再执行
问题描述 现在有一个主线程X,和两个子线程A和B,A和B之间没有依赖关系且两者的执行时间不确定,现在要求如下: 1:不限制A和B执行顺序的 2:主线程X需要在子线程A和B执行完成之后再执行 方案1 1 ...
最新文章
- 高颜值的神经网络可视化工具:3D、彩色、可定制,还能可视化参数重要性
- Selenium高亮页面对象
- Material组件之MaterialApp、Scaffold、AppBar学习笔记
- mysql无法建立连接_【MySql】mysql无法建立连接或建立连接失败原因分析
- K8S常见错误、原因及处理方法
- curl 的用法指南
- C# Tailor Your Application by Building a Custom Forms Designer with .NET
- Matplotlib常用命令
- Android内存优化2 了解java内存分配 2
- 机器学习基础:K近邻算法(Machine Learning Fundamentals: KNN)
- TCP 粘包/拆包说明 及 异常案例
- Win11繁体中文字体显示不全如何解决?
- 教程 参数设置_AI全自动剪辑软件安装教程,参数设置与使用注意事项
- 计算机专业英语高等教育出版社2013版
- java微信公众号百度地图,微信公众号集成百度地图api,实现收货地址选择
- ie地址栏不能识别中文参数(google浏览器是正常的)
- pathon和c语言的区别
- 《数据挖掘》学习框架
- Python xlrd读取、处理excel日期类型
- MySQL数据清理有技巧,这么破