在网上看到这样一道试题,关于多线程的,拿来小练一下
题目:有一个南北向的桥,只能容纳一个人,现桥的两边分别有10人和12人,编制一个多线程序让这些人到达对岸,每个人用一个线程表示,桥为共享资源。在过桥的过程中显示谁在过桥及其走向。
以下是我的代码
package test;
public class MyThread3 extends Thread {
private String name;
private String direction;
public MyThread3(String name, String direction) {
this.direction = direction;
this.name = name;
System.out.println(direction + "方的" + name + "开始过桥...");
}
public synchronized void run() {
try {
Thread.currentThread().sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(this.direction + "方的" + this.name + "过桥完成!"+"---"+Thread.currentThread().getName());
}
public static void main(String[] args) throws InterruptedException {
MyThread3[] ths = new MyThread3[12];
int i = 0;
boolean flag = true;
while (i <ths.length) {
if (i < 10)
ths[i] = new MyThread3("第" + (i+1) + "个人",flag == false ? "北" : "南");
else
ths[i] = new MyThread3("第" + (i+1) + "个人", "南");
ths[i].start();
ths[i].join();
ths[i].sleep(1000);
flag = !flag;
if (flag == true||i>=10)
i++;
}
}
}
对于synchronized 关键字用法还没完全搞懂,在run中可有可无的
分享到:
相关推荐
《JAVA多线程教学演示系统》是一篇深入探讨JAVA多线程编程的论文,它针对教育领域中的教学需求,提供了一种生动、直观的演示方式,帮助学生更好地理解和掌握多线程技术。这篇论文的核心内容可能包括以下几个方面: ...
【标题】基于tesseract的多线程OCR服务器的JAVA实现 在信息技术领域,光学字符识别(OCR)技术被广泛应用于将图像中的文本转换为可编辑的电子格式。Tesseract是一款开源OCR引擎,由Google维护,它具有高精度和强大...
刚学完多线程和线程池,以及线程爱好者。 使用场景及目标: 大文件的快速下载,经测试在100M带宽的网络下,下载一个40M的文件,不超过两秒钟,当然还得根据自己电脑的配置来讲。 其他说明: 文件如果特别小,而...
Java精通多线程19项目全面训练源码(线程安全、线程同步、等待唤醒机制、单例设计模式)
本资源“java_type_train.rar”提供了一个关于Java多线程和打字程序的训练材料,特别适合想要提升这方面技能的学习者。 多线程在Java中的实现主要有两种方式:通过继承Thread类或实现Runnable接口。当创建一个新...
【Java练手小项目——多线程...通过这个“Java练手小项目——多线程聊天室”,你可以深入了解Java多线程的原理和实践,同时学习到网络编程和并发集合的运用,这对于提升你的Java编程技能和解决实际问题的能力大有裨益。
适合练手、课程设计、毕业设计的Java项目源码:多线程与线程安全实践-基于Http协议的断点续传.rar 适合练手、课程设计、毕业设计的Java项目源码:多线程与线程安全实践-基于Http协议的断点续传.rar 适合练手、课程...
4. **多线程**:Java提供了强大的多线程支持。线程的创建、同步、通信以及死锁问题等都会出现在训练题中。了解synchronized关键字、wait()、notify()和notifyAll()方法,以及Thread和Runnable的区别,能帮助开发者...
这个"多线程赛跑小游戏"是一个很好的练手项目,可以帮助开发者理解并实践多线程的基本概念和操作。下面将详细介绍这个项目可能涉及的知识点。 首先,多线程是指在一个程序中同时执行多个独立的线程,每个线程都有...
在处理大量图像或需要快速响应时间的应用场景中,多线程并发识别可以显著提升效率。以下将详细介绍如何利用Tesseract OCR实现多线程并发识别,以及可能涉及的相关技术点。 首先,理解Tesseract OCR的基本工作原理是...
2. **多线程**:Java提供了内置支持多线程的能力,理解线程的创建、同步和通信。 3. **IO/NIO**:深入学习Java的IO流和NIO(New IO)框架,用于高效的数据传输。 4. **网络编程**:利用Socket进行客户端-服务器...
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
是不是试了很多次都没有达到自己想要的效果呢? 没关系,看到这你就已经有收获了 文章目录一、动图效果展示二、服务端代码(核心)三、bug吐槽四、分享交流 一、动图效果展示 二、服务端代码(核心) 光说不练歪...
"Java练手小项目"通常是指使用Java编程语言进行实践操作的小型应用程序,旨在帮助开发者提升技能、熟悉Java特性和编程流程。在这个特定的案例中,我们关注的是一个名为"简易通企业进销存管理系统"的项目。进销存管理...
│ 高并发编程第一阶段05讲、采用多线程方式模拟银行排队叫号.mp4 │ 高并发编程第一阶段06讲、用Runnable接口将线程的逻辑执行单元从控制中抽取出来.mp4 │ 高并发编程第一阶段07讲、策略模式在Thread和Runnable...
Java SE学习完成后,自己练手项目十一 这个项目里面多出了:任务栏图标功能实现,和浮动图标的实现(SystemTray 、JWindow) 巩固了线程、序列化等概念,再次使用树形、表格 留心主界面的关闭按钮,我改成隐藏...
这些策略的目的是使算法设计更加简练,同时保持单线程和多线程在核心算法上的一致性。 针对有序数据,Partition函数需要特别的实现。文中描述了如何根据测试数据类型的不同选择最优实现算法,以及如何优化针对有序...
通过学习这些源码,开发者可以深入理解Java的面向对象编程、图形用户界面设计、多线程编程、算法应用以及网络编程等多个方面。这些小游戏源码不仅提供了实践机会,还能帮助提升编程技巧,为开发更大规模的游戏项目...
6. **多线程**:Java内置了多线程支持,通过Thread类和Runnable接口实现。源码可能包含并发编程的例子,如同步、锁、线程池和并发集合的使用。 7. **I/O流**:Java的I/O流系统用于读写数据,包括文件操作、网络通信...