java多线程 写10个线程,线程编号依次为0、1、…、9,每个线程不断打印自己的线程编号。
时间: 2023-12-29 13:45:07 浏览: 23
下面是一个简单的Java多线程程序,实现了10个线程,每个线程不断打印自己的线程编号:
```
public class MultiThreadDemo {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
new Thread(new MyRunnable(i)).start();
}
}
}
class MyRunnable implements Runnable {
private int threadId;
public MyRunnable(int id) {
this.threadId = id;
}
public void run() {
while (true) {
System.out.println("Thread " + threadId);
}
}
}
```
程序中,首先在主线程中创建了10个新线程,并分别传入不同的线程编号。每个新线程都是一个MyRunnable对象,该对象实现了Runnable接口,重写了run()方法。在run()方法中,不断打印自己的线程编号。由于每个线程都在自己的run()方法中无限循环,因此程序会不停地打印线程编号,直到程序强制退出。
相关问题
用Java写多线程 写10个线程,线程编号依次为0、1、…、9,每个线程不断打印自己的线程编号。
以下是Java代码实现:
```java
public class MyThread implements Runnable {
private int threadNum;
public MyThread(int num) {
this.threadNum = num;
}
@Override
public void run() {
while (true) {
System.out.println("Thread " + threadNum);
}
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
MyThread thread = new MyThread(i);
new Thread(thread).start();
}
}
}
```
在这个例子中,我们创建了一个名为 `MyThread` 的实现了 `Runnable` 接口的类。在 `MyThread` 类的构造函数中,我们将线程编号作为参数传递。在 `run()` 方法中,我们使用一个无限循环来不断打印线程编号。在 `main()` 方法中,我们创建了10个 `MyThread` 对象,并将它们作为参数传递给 `Thread` 构造函数,然后调用 `start()` 方法来启动线程。这样,我们就创建了10个线程,并且每个线程都会不断打印自己的线程编号。
java多线程每个线程挨着打印abc的4种实现方式
Java多线程每个线程挨着打印abc的4种实现方式如下:
1. 使用同步方法:
在一个类中创建一个共享的锁对象。创建3个线程,分别调用该对象的3个同步方法,在每个方法中使用循环打印对应的字符,然后调用notifyAll()方法唤醒其他两个线程,最后调用wait()方法当前线程进入等待状态。
2. 使用synchronized关键字:
在一个类中创建一个共享的锁对象,并使用synchronized关键字修饰方法。创建3个线程,分别调用该对象的3个同步方法,在每个方法中使用循环打印对应的字符,然后调用notifyAll()方法唤醒其他两个线程,最后调用wait()方法当前线程进入等待状态。
3. 使用Lock和Condition接口:
创建一个ReentrantLock对象和3个Condition对象。创建3个线程,分别获取对应的Condition对象,然后在循环中使用Lock对象的lock()方法获取锁,使用对应的Condition对象的await()方法等待,直到该线程被唤醒后打印对应的字符,并调用其他两个Condition对象的signalAll()方法唤醒其他两个线程。
4. 使用信号量Semaphore:
创建一个Semaphore对象和3个线程。在每个线程中使用Semaphore对象的acquire()方法获取许可,然后在循环中打印对应的字符,最后调用Semaphore对象的release()方法释放许可,并通知其他两个线程获取许可。
以上这四种方式都可以实现多线程每个线程挨着打印abc的效果。然而,具体的选择取决于实际情况,例如需要考虑线程的数量、同步机制的复杂度、线程间协作的方式等。