java代码实现编程一个程序,4个线程同时向一个10000位的数组中分别写入1-10,100-1000,2000-3000,4000-5000的数。
时间: 2024-02-19 07:03:43 浏览: 65
java代码编程
以下是实现该程序的Java代码:
```java
public class ArrayWriter {
private static final int ARRAY_SIZE = 10000;
private static int[] array = new int[ARRAY_SIZE];
public static void main(String[] args) {
Thread t1 = new Thread(new Writer(1, 10));
Thread t2 = new Thread(new Writer(100, 1000));
Thread t3 = new Thread(new Writer(2000, 3000));
Thread t4 = new Thread(new Writer(4000, 5000));
t1.start();
t2.start();
t3.start();
t4.start();
try {
t1.join();
t2.join();
t3.join();
t4.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Array contents: " + Arrays.toString(array));
}
static class Writer implements Runnable {
private final int start;
private final int end;
public Writer(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public void run() {
for (int i = start; i <= end; i++) {
array[i] = i;
}
}
}
}
```
该程序中创建了四个线程,每个线程分别向数组中写入不同范围的数。线程实现类是 `Writer`,它在 `run` 方法中循环遍历指定范围的数,并将它们写入数组中。`Writer` 类的构造方法接收起始和结束位置两个参数,用于指定要写入的数的范围。
在 `main` 方法中创建了四个 `Writer` 线程,并启动它们。随后使用 `join` 方法等待所有线程执行完毕,最后输出数组中的内容。
需要注意的是,由于多个线程同时访问数组,可能会出现竞态条件和并发问题。为了保证线程安全,可以使用锁或其他同步机制来保护共享资源的访问。在本例中,由于每个线程写入的位置都不同,因此不会出现竞态条件,因此不需要使用额外的同步机制。
阅读全文