第12周预习问答

一.以前你编写的Java程序同时能做几件事情?有几个执行流程?main方法执行完,整个程序一定会退出吗?

答:以前我所编写的java程序一次只能做一件事,主程序 main 方法中代码的执行是一个单独的执行流并且main方法执行完之后程序退出
然而,Java的 Thread 类和 Runnable 接口允许在程序中创建多个线程,从而实现多线程并发执行。每个线程都有独立的执行路径,多个线程可以同时运行,使得程序能够同时处理多个任务

二.早期的电脑一般是单核CPU,但那时我们就可以在编写程序的同时听歌,你觉得其CPU可以同时执行两个程序的指令吗?如果不能,为什么我们可以边写程序边听歌?

答:早期的单核CPU理论上无法“真正”同时执行多个程序的指令。单核CPU只能在某一时刻执行一条指令,这意味着它并没有并行处理能力。但是,操作系统通过时间分片(时间片轮转)技术模拟了“并行”,让用户感觉到多个程序同时在运行。
在写程序时同时听歌,操作系统会将CPU的时间分配给不同的进程(例如编写代码的编辑器和正在播放的音乐播放器)。虽然CPU在任意时刻只能执行一个进程的指令,但操作系统会快速地切换不同进程,使得每个进程看起来好像是同时执行的,这就是所谓的“多任务”或者“并发执行”。

三.打开“资源监视器”观察你使用的QQ、浏览器或者WPS,一般有几个线程?思考一下,当你运行这些程序的时候,有哪些现象证明了这些程序使用了多个线程?

答:QQ、浏览器、WPS等现代应用程序通常会使用多个线程。比如,一个浏览器可能会为每个标签页、每个插件、每个页面的渲染和后台任务分配不同的线程。而一个程序通常至少会有一个主线程用于处理UI和核心逻辑,外加多个子线程处理其他任务。

在“资源监视器”中,你可以看到这些程序可能会启动多个线程。具体的线程数会根据程序的复杂度、所执行的任务数以及操作系统的调度方式有所不同。
如图
在这里插入图片描述

四.运行“Bounce”与"BounceThread"两个程序。当你多次点击Start时,两个程序运行起来有何不同?为什么?

答:前者一次只出现了一个小球,后者多次点击start后会出现很多小球.原因是BounceThread程序采用了多线程

五.思考:两个人只有一双筷子(用A、B分别表示这双筷子的两只),这两个人只有各自获A、B这两只筷子的候才能成功吃饭。可以想象,他们会产生冲突。尝试说明他们可能产生哪些冲突?怎么解决这些冲突?

答:可能两个人由于想吃的东西不同导致筷子的使用出现冲突,或者a礼让b让b先决定吃什么,但b也同样等a做出决定,导致一直没动筷子.可以事先约定好决定吃什么东西的顺序,到谁决定就由谁决定吃什么

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值