java中主线程首先执行_java经典面试题:子线程先运行30次主线程,主线程40次,如此循环50次?...
最近偶遇这道题,网上相似的题都是循环次数不一样。然而我百度搜到的论坛或者博客感觉都不太对,运行有穿插。请给出正确结果。
我们假使所有人都引入了业务对象。
并且我有疑问?感觉题目本意不是new Thread()放在前面。
网上有人做法是用标志位防止虚假唤醒,还有锁放在方法上的。是否有道理?
public class Test {
public static void main(String[] args) throws InterruptedException {
final Business business = new Business();
// 子线程
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 50; i++) {
try {
business.sonBusiness(i);
} catch (InterruptedException e) {
}
}
}
}).start();
for (int i = 0; i < 50; i++) {
business.mainBusiness(i);
}
}
}
class Business {
public void mainBusiness(int i) throws InterruptedException {
synchronized (this) {
for (int j = 1; j <= 20; j++) {
System.out.println("主线程第" + i + "轮,第" + j + "次");
}
this.notify();
this.wait();
}
}
public void sonBusiness(int i) throws InterruptedException {
synchronized (this) {
for (int j = 1; j <= 30; j++) {
System.err.println("子线程第" + i + "轮,第" + j + "次");
}
this.notify();
this.wait();
}
}
}
java中主线程首先执行_java经典面试题:子线程先运行30次主线程,主线程40次,如此循环50次?...相关推荐
- Java中主线程如何捕获子线程抛出的异常
Java中主线程如何捕获子线程抛出的异常 参考文章: (1)Java中主线程如何捕获子线程抛出的异常 (2)https://www.cnblogs.com/jpfss/p/10272885.html ...
- Java中主线程如何捕获子线程抛出 ...
这么来看待这个问题.首先明确线程代码的边界.其实很简单,Runnable接口的run方法所界定的边界就可以看作是线程代码的边界.Runnable接口中run方法原型如下: << ...
- 【Java 多线程】Java中主线程如何捕获子线程抛出的异常
首先明确线程代码的边界.其实很简单,Runnable接口的run方法所界定的边界就可以看作是线程代码的边界.Runnable接口中run方法原型如下: public void run(); 而所有的具 ...
- [转]Java中主线程如何捕获子线程抛出的异常
这么来看待这个问题.首先明确线程代码的边界.其实很简单,Runnable接口的run方法所界定的边界就可以看作是线程代码的边界.Runnable接口中run方法原型如下: << ...
- Java中控制多线程顺序执行
Java中控制多线程顺序执行 一.概述 二.普通示例 三.控制示例 3.1.设置线程优先级 3.2.使用线程类的join() 3.2.1.在主线程join() 3.2.2.在子线程join() 3.3 ...
- Java实现主线程与子线程访问临界资源同步模拟
1.问题描述 使用不同的方法完成主线程与子线程的同步,要求子线程先执行,在主线程中使用Thread类创建一个子线程,主线程创建后进入阻塞状态,直到子线程运行完毕后唤醒主线程. 2.代码实现 (2.1) ...
- c语言主线程退出子线程,简单了解C语言中主线程退出对子线程的影响
这篇文章主要介绍了简单了解C语言中主线程退出对子线程的影响,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 对于程序来说,如果主进程在子进程还未结束时 ...
- java中的case1怎么说_Java 中的 CAS 简述及原理解析
一.CAS 是什么? CAS(Compare And Swap),比较并交换,它是一条CPU并发原语.它的功能是判断内存某个位置的值是否为预期值,如果是则更新为新的值,这个过程是原子的.1 publi ...
- java中如何生成可执行的jar文件
java中如何生成可执行的jar文件最简单的方法就是:jar -cfe Card.jar CardLayoutDemo CardLayoutDemo$1.class CardLayoutDemo$my ...
最新文章
- 【网络安全】一些webshell免杀的技巧
- 剑指offer面试题15:链表中倒数第K个节点
- 如何用 Nacos 构建服务网格生态?
- 《大型网站技术架构》1:概述
- 设计模式系列之七大原则之——迪米特法则
- 【深度学习】吴恩达网易公开课练习(class1 week3)
- 单片微型计算机简称单片机是指集成,什么是单片微型计算机 -解决方案-华强电子网...
- leetcode743. 网络延迟时间(迪杰斯特拉算法)
- java 跨域 下载文件_文件下载重命名(可跨域)
- python在命令端口运行脚本_扫描端口占用情况的python脚本
- MyBatis 延迟加载的三种加载方式深入,你get了吗?
- 【CMAKE系列】CMAKE外部工程引用及编译打印
- idm下载百度网盘有限制 提示403错误 下载显示没有权限404,最新的解决办法教程
- Android攻略--单位转化器UC--Units Converter(学习笔记)
- 使用LordPE和Import REC脱壳
- html网页实现分享功能,H5网页实现微信分享功能
- 弘辽科技:限制店铺流量上涨的七大原因
- 渝粤题库 陕西师范大学 《文学概论》作业
- 天天打排位,你知道王者荣耀的皮肤怎么测试吗?
- linux 显卡 1050ti,MAX-Q终于出中端卡了 GTX1050Ti MAX-Q显卡曝光