1、有一辆班车除司机外只能承载80个人,假设前中后三个车门都能上车,如果坐满则不能再上车。

请用线程模拟上车过程并且在控制台打印出是从哪个车门上车以及剩下的座位数。

比如:

(前门上车---还剩N个座...)

package com.henu;

/*

1、有一辆班车除司机外只能承载80个人,假设前中后三个车门都能上车,如果坐满则不能再上车。

请用线程模拟上车过程并且在控制台打印出是从哪个车门上车以及剩下的座位数。

比如:

(前门上车---还剩N个座...)

*/

public class Test01 {

public static void main(String[] args) {

BusDoor bDoor = new BusDoor();

Thread frond = new Thread(bDoor,"FROND->");

Thread centre = new Thread(bDoor,"CENTRE->");

Thread end = new Thread(bDoor,"END->");

frond.start();

centre.start();

end.start();

}

}

class BusDoor implements Runnable{

private int seat = 80;

@Override

public void run() {

while (seat <= 80) {

synchronized (this) {

if (seat > 0) {

try {

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

seat--;

System.out.println(Thread.currentThread().getName() +

"go on, there are " + seat + "seats");

}else {

break;

}

}

}

}

}

  1. 同时开启3个线程,共同输出100~200之间的所有数字,并且在输出奇数的时候将线程名称打印出来

package com.henu;

/*

2、同时开启3个线程,共同输出100~200之间的所有数字,并且在输出奇数的时候将线程名称打印出来

*/

public class Test02 {

public static void main(String[] args) {

PrintNumber pn = new PrintNumber();

Thread t1 = new Thread(pn,"ThreadOne->");

Thread t2 = new Thread(pn,"ThreadTwo->");

Thread t3 = new Thread(pn,"ThreadThree->");

t1.start();

t2.start();

t3.start();

}

}

class PrintNumber implements Runnable{

private int start = 100;

@Override

public void run() {

while(start < 200) {

synchronized (this) {

if (start > 200) {

break;

}else {

try {

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

if (start % 2 == 0) {

System.out.println(start);

}else {

System.out.println(Thread.currentThread().getName() + start);

}

start++;

}

}

}

}

}

JavaSE各阶段练习题----多线程相关推荐

  1. JavaSE各阶段练习题----多线程-垃圾回收

    1独立完成三种单例模式的代码 package Single; /* 饿汉式  */ public class Demo01 {     public static void main(String[] ...

  2. JavaSE各阶段练习题----IO流

    package com.io; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOEx ...

  3. JavaSE各阶段练习题----文件和IO

    1.键盘录入一个文件夹路径,删除该文件夹(包含文件夹内容) import java.io.File; public class Test01_删除该文件夹 { public static void m ...

  4. JavaSE各阶段练习题----Map

    1 分析以下需求,并用代码实现: (1)统计每个单词出现的次数 (2)有如下字符串"If you want to change your fate I think you must come ...

  5. JavaSE各阶段练习题----集合-Collection-Set-List

    1.分析以下需求,并用代码实现: (1)有如下代码: List<String> list = new ArrayList<>(); list.add("a" ...

  6. JavaSE各阶段练习题----异常

    异常作业: 简述什么是异常.异常的继承体系? 异常是程序执行期间中断指令的正常流程的事件. 异常继承体系: 简述异常的处理方式? 捕获异常.即使用try-catch-finally 使用throws抛 ...

  7. javaSE各阶段练习题--工具类-常用类-递归-包装类-内部类

    1 创建一个Student 类 包含属性有 序号 姓名 年龄 生日 提供对应的setter/getter创建对象,完成赋值(setter赋值和构造方法赋值) 在控制台输出学生对象的信息,要求生日的格式 ...

  8. javaSE各阶段练习题--面向对象-多态-抽象类-接口

    1 (多态)定义榨汁机JuiceMachine 有榨汁方法makeJuice,传入相应的水果.如果传入的是Apple 输出 "流出苹果汁"传入的是Orange 输出 "流 ...

  9. javaSE各阶段练习题--面向对象-StringBuilder-继承-包和访问权限

    1.将前一天作业,用StringBuffer进行改造,尽量提升时间和空间效率 定义一个方法,功能如下:给定一个数组,转换成一个字符串 例如:数组为int[] arr = {1, 2, 3},字符串为[ ...

最新文章

  1. windows10 下 cuda安装
  2. hoj 1067 Rails //poj1363 Rails 栈的简单应用
  3. 怎么看android sdk 文档
  4. 程序员每天到底可以写几行代码?
  5. Linux chroot命令
  6. C++内存分配方式-堆、栈、自由存储区、全局/静态存储区和常量存储区
  7. java对象序列化为字符串
  8. c mysql 并发处理_mysql队列中实现并发读的实现方法解析
  9. 在Eclipse上搭建Cocos2d-x的Android开发环境
  10. Win10技巧:如何确定电脑是否适用Hyper-V虚拟机?
  11. Word、Excel、PPT使用技巧与实战方法大全(2013完整版) 免积分下载
  12. c语言编程屏保动画实例,用C语言自己动手制作炫彩电脑屏保
  13. Androidd 高德地图功能系列开发(搜索模块)
  14. Android基于ViewPager2实现循环轮播图、3D画廊效果
  15. word公式常用快捷键
  16. java取模数_java – 快速乘法和减法模数
  17. 椭圆型变分问题理论及数值方法
  18. 最近的题目总结(树,电话线铺设,我的天)
  19. 一些关于TIA博图软件使用规范
  20. 【72】编辑距离问题

热门文章

  1. 2020CCPC(威海) - Clock Master(数论+分组背包)
  2. 牛客 - What Goes Up Must Come Down(树状数组求逆序对)
  3. HDU - 1796 How many integers can you find(容斥原理)
  4. python操作json_如何使用Python处理JSON数据
  5. python基础语法-三大内建数据结构之字典(dict)
  6. Lua 协同程序(coroutine)
  7. 给Source Insight做个外挂系列之六--“TabSiPlus”的其它问题
  8. JUnit中测试异常抛出的方法
  9. 回腾讯了......
  10. 操作系统的起源|开源运动的兴起