/**
* Java多线程方面的编程笔试题
Java
写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。要求用线程间的通信。
注:分别给两个对象构造一个对象o,数字每打印两个或字母每打印一个就执行o.wait()。
在o.wait()之前不要忘了写o.notify()。
*
*/
public class Test {
public static void main(String[] args) {
Printer p = new Printer();
Thread t1 = new NumberPrinter(p);
Thread t2 = new LetterPrinter(p);
t1.start();
t2.start();
}
}
class Printer {
private int index = 1;// 设为1,方便计算3的倍数
// 打印数字的构造方法,每打印两个数字,等待打印一个字母
public synchronized void print(int i) {
while (index % 3 == 0) {
try {
wait();
} catch (Exception e) {
}
}
System.out.print("" + i);
index++;
notifyAll();
}
// 打印字母,每打印一个字母,等待打印两个数字
public synchronized void print(char c) {
while (index % 3 != 0) {
try {
wait();
} catch (Exception e) {
}
}
System.out.print("" + c);
index++;
notifyAll();
}
}
// 打印数字的线程
class NumberPrinter extends Thread {
private Printer p;
public NumberPrinter(Printer p) {
this.p = p;
}
public void run() {
for (int i = 1; i <= 52; i++) {
p.print(i);
}
}
}
// 打印字母的线程
class LetterPrinter extends Thread {
private Printer p;
public LetterPrinter(Printer p) {
this.p = p;
}
public void run() {
for (char c = 'A'; c <= 'Z'; c++) {
p.print(c);
}
}
}
/*
* 如果这题中,想保存需要打印的结果,可在Printer类里定义一个成员变量
*
* String s = “”; //不写“”的话是null,null跟没有东西是不一样的,它会把null当成字符 =_=
*
* 然后在两个print()方法里面,while循环后分别加上 s = s + ” “+i; 以及 s = s +” “+ c;
*/
相关推荐
本例题将深入探讨Java多线程的相关知识点。 一、线程的创建与启动 1. 实现Runnable接口: 创建一个类实现`Runnable`接口,重写`run()`方法。然后创建`Thread`对象,将Runnable实例作为参数传递给构造器,最后调用...
该程序采用良好的格式,美观的界面,通俗易懂,本例题是采用多线使一小球在界面不断移动
总结来说,Java线程机制提供了强大的并发处理能力,通过理解并熟练掌握上述知识点,开发者能够编写出高效、稳定的多线程程序,应对各种复杂的并发场景。在实际编程中,合理地使用线程和同步机制,不仅可以提高程序的...
这些例题可能涵盖了从简单的数据类型、控制结构到复杂的多线程、网络编程等多个方面。 在Java的学习过程中,了解和实践这些例题至关重要,因为它们能帮助我们巩固理论知识,提升实际编程技能。例如,你可能会遇到...
标题中的“java程序设计例题全集”意味着这份资料包含了大量关于Java编程的实践题目,这些题目可能包括基础语法、类与对象、异常处理、集合框架、多线程、网络编程等多个方面,是学习和巩固Java编程技能的理想资源。...
同时,我们还需要了解 Java 语言的异常处理机制和多线程编程。 Java 语言高级知识 在 Java 语言高级知识中,我们需要了解 Java 语言的高级概念,包括泛型编程、Lambda 表达式、函数式编程等。同时,我们还需要了解...
6. **多线程**:Java提供了丰富的多线程支持,包括Thread类和Runnable接口。通过实例,学习者可以理解线程同步、互斥锁、条件变量等概念,以及如何处理并发问题。 7. **网络编程**:Java的Socket编程允许创建客户端...
6. **多线程**:Java支持并发编程,通过Thread类和Runnable接口可以创建和管理线程。理解同步和互斥的概念,以及synchronized关键字的应用,对于优化性能至关重要。 7. **反射**:反射是Java的一个高级特性,允许...
6. **多线程**:Java提供内置的Thread类和Runnable接口来实现并发执行。 7. **IO流的NIO(New IO)**:一种非阻塞的I/O模型,提高了Java处理I/O操作的效率。 8. **反射**:允许在运行时检查和修改类、接口、字段和...
5. 多线程:在某些情况下,界面更新可能需要在后台线程进行,以防止阻塞用户界面。`ex7.9.5`可能涉及到如何在AWT中使用多线程来确保GUI的流畅性。 6. 窗口管理:在`ex7.8.20`和`ex7.9.15`中,可能涉及到如何创建和...
6. **多线程**:Java提供了丰富的多线程支持,例题可能包含如何创建和管理线程,同步与互斥的概念,以及并发编程中的锁机制。 7. **设计模式**:设计模式是解决常见编程问题的通用方案,如单例模式、工厂模式、装饰...
6. ** chap11 **:在这一章,学习者可能将学习到多线程编程,包括Thread类的使用、synchronized关键字、volatile关键字以及线程间通信的方法。 7. ** chap12 **:最后,可能是高级主题,比如反射机制,允许程序在...
8. **第十章例题**:可能包含多线程的实现,线程的创建、同步控制(synchronized关键字、wait()、notify()方法)以及线程池的应用。 9. **第十一章例题**:可能涉及反射机制,如何在运行时获取类的信息,创建并调用...
8. **多线程**:Java内置了多线程支持,通过`Thread`类或实现`Runnable`接口可以创建线程。理解线程的生命周期,同步机制(synchronized关键字、wait()、notify()等)以及线程池的概念。 9. **反射机制**:Java反射...
6. **多线程**:Java支持多线程编程,允许程序同时执行多个任务。你可以从例题中学习如何创建Thread对象,或者使用Runnable接口,以及线程间的同步和通信。 7. **函数式编程**:Java 8引入了Lambda表达式和Stream ...
6. **多线程**:Java提供了内置的多线程支持。通过Thread类和Runnable接口,你可以学习如何创建和管理并发执行的任务。例子可能包含同步机制(如synchronized关键字,wait()和notify()方法)的使用。 7. **Swing与...
5. **多线程**:Java内置了多线程支持,可以同时执行多个任务,提高了程序的效率和响应性。 6. **丰富的库支持**:Java的标准库(Java API)提供了大量的类和接口,涵盖了网络、I/O、数据库连接、图形用户界面(GUI...
- **Runnable接口**:另一种实现多线程的方式,通过实现接口并将其传递给Thread类的构造函数。 - **同步机制**:synchronized关键字、wait()、notify()和notifyAll()方法,用于避免并发问题。 7. **网络编程** -...
计算机后端-Java-Java核心基础-第20章 多线程 15. 线程通信的例题.avi