要实现多线程交替打印两个数,可以使用Java提供的线程同步机制来完成。具体步骤如下:
1.创建两个线程对象,一个线程对象负责打印奇数,另一个线程对象负责打印偶数。
2.使用synchronized关键字来实现线程同步,确保只有一个线程在打印时另一个线程处于等待状态。
3.使用wait和notifyAll方法来实现线程同步。当一方线程打印完后调用wait方法使其处于等待状态,另一方线程打印后调用notifyAll方法,唤醒处于等待状态的线程。
下面是一个具体的示例:
public class PrintNumber {
private int number = 1;
public static void main(String[] args) {
PrintNumber printNumber = new PrintNumber();
Thread thread1 = new Thread(new PrintOddNumber(printNumber));
Thread thread2 = new Thread(new PrintEvenNumber(printNumber));
thread1.start();
thread2.start();
}
// 内部类负责打印奇数
private static class PrintOddNumber implements Runnable {
private PrintNumber printNumber;
public PrintOddNumber(PrintNumber printNumber) {
this.printNumber = printNumber;
}
@Override
public void run() {
synchronized (printNumber) {
while (printNumber.number < 100) {
if (printNumber.number % 2 == 1) {
System.out.println("Thread1: " + printNumber.number);
printNumber.number++;
try {
printNumber.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
printNumber.notifyAll();
}
}
}
}
}
// 内部类负责打印偶数
private static class PrintEvenNumber implements Runnable {
private PrintNumber printNumber;
public PrintEvenNumber(PrintNumber printNumber) {
this.printNumber = printNumber;
}
@Override
public void run() {
synchronized (printNumber) {
while (printNumber.number <= 100) {
if (printNumber.number % 2 == 0) {
System.out.println("Thread2: " + printNumber.number);
printNumber.number++;
try {
printNumber.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
printNumber.notifyAll();
}
}
}
}
}
}
示例说明:
1.在上面的示例中,我们创建了一个打印数字的类PrintNumber,它包含一个成员变量number,用于记录要打印的数字。然后我们创建了PrintOddNumber和PrintEvenNumber两个内部类,分别负责打印奇数和偶数。
2.在run方法中,我们使用synchronized关键字锁定了PrintNumber对象,确保只有一个线程在访问。
3.在打印奇数的内部类中,我们使用while循环确保只有当number小于100时才进行打印操作。在打印完数字后我们调用wait方法使得线程处于等待状态,等待另一个线程打印完毕后唤醒。在打印偶数的类中也是类似的操作。
4.如果当前线程打印的数字是偶数,则唤醒处于等待状态的线程执行。
5.使用Thread的start方法启动线程。
以上就是Java实现多线程交替打印两个数的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现多线程交替打印两个数 - Python技术站