/**
* <p>
* Title: 线程间合作
* </p>
* <p>
* Description: 本实例使用二个线程共同合作绘制一个实体三角。
* </p>
* <p>
* Filename: ITCDemo.java
* </p>
*/
public class ITCDemo {
private int flag = 0; // 两个线程都不工作
int count = 20;
/**
* <br>
* 方法说明:主方法 <br>
* 输入参数: <br>
* 返回类型:
*/
public static void main(String[] arg) {
new ITCDemo();
}
/**
* <br>
* 方法说明:构造器,启动两个子线程。 <br>
* 输入参数: <br>
* 返回类型:
*/
public ITCDemo() {
Thread1 t1 = new ITCDemo.Thread1();
Thread2 t2 = new ITCDemo.Thread2();
// 启动两线程
t1.start();
t2.start();
// 让线程一首先工作。
flag = 1;
}
/**
* <br>
* 类说明:内部类,继承了Thread, <br>
* 类描述:实现了在输出每行前面的空格。
*/
class Thread1 extends Thread {
int count1 = count; // 20 个空格
public void run() {
while (true) {
if (count1 <= 0)
break;
if (flag == 1) {
for (int i = 0; i < count1; i++) {
System.out.print(" ");
}
count1--;
flag = 2;
}
}
}
}
/**
* <br>
* 类说明:内部类,继承了Thread, <br>
* 类描述:实现了在输出每行第“*”号。并提供换行。
*/
class Thread2 extends Thread {
int count2 = 0;
public void run() {
while (true) {
if (count2 >= count)
break;
if (flag == 2) {
for (int i = 0; i < (count2 * 2 + 1); i++) {
System.out.print("*");
}
System.out.print("\n");
count2++;
flag = 1;
}
}
}
}
}
// 方法 2 :
class Flag {
public static int flag = 0;
}
分享到:
相关推荐
2. **横向滚动条**:Word文档编辑区下方通常会有一个横向滚动条,用户可以通过该滚动条实现文档页面的水平方向滚动。这是Word文档编辑界面的一个基本组成部分,有助于查看较长或宽幅的文档内容。 ### IE浏览器使用 ...
每个图形元件都可以定义为一个类,包含位置、尺寸、颜色等属性,以及绘制自身的方法。通过继承和组合,可以构建更复杂的图形。 ### 12. final, finally, finalize的区别 #### 知识点详细解释: - `final`:用于...
实例014 使当前项目依赖另一个项目 21 1.3 界面设计器 22 实例015 安装界面设计器 22 实例016 设计Windows系统的运行对话框 界面 23 实例017 设计计算器程序界面 26 实例018 设计关于进销存管理系统的界面 27 第2章 ...
同时,它引入了基于视域的预分页场景调度算法,将场景和实体分为两个独立线程进行调度,创建了一个可漫游且可交互查询的森林三维可视化场景。 关键词“森林生长模拟”强调了模拟森林中树木生长的过程,这通常涉及...
- **知识点**:`synchronized` 是 Java 中的关键字,用于控制多个线程访问共享资源,确保同一时间只有一个线程能够访问被该关键字修饰的方法或代码块。这有助于避免多线程环境下的数据不一致性和竞态条件。 - **答案...
Python是一种强大的编程语言,拥有丰富的内置模块,这些模块提供了各种功能,从基本的数据处理到复杂的网络通信和系统交互。以下是一些重要的Python内置模块及其详细说明: 1. **calendar**: 提供了处理日历相关...