2. 编写一个程序,开启3个线程,去读取数组中的资源,要求读取的数据不能重复 数组: public static int[] arr ={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}; main方法格式: public class ReadArray{ public static void main(String[] args) { } } 输出示例: 线程1:读取1 线程2:读取3 线程3:读取4, 线程1:读取6 线程2:读取2 线程3:读取5,
时间: 2023-08-19 13:36:39 浏览: 78
好的,我会帮你解答这个问题。
这道题目可以使用多线程技术来实现,我们可以开启三个线程,每个线程负责读取数组中的一部分数据,确保每个数据只被一个线程读取。
下面是代码实现:
```java
public class ReadArray {
public static int[] arr = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30};
public static void main(String[] args) {
// 创建三个线程
Thread t1 = new Thread(new ReadThread(0));
Thread t2 = new Thread(new ReadThread(1));
Thread t3 = new Thread(new ReadThread(2));
// 启动线程
t1.start();
t2.start();
t3.start();
}
static class ReadThread implements Runnable {
int index;
public ReadThread(int index) {
this.index = index;
}
@Override
public void run() {
while (index < arr.length) {
synchronized (ReadArray.class) {
if (index < arr.length) {
System.out.println("线程" + Thread.currentThread().getName() + ":读取" + arr[index]);
index += 3;
}
}
}
}
}
}
```
在上面的代码中,我们创建了三个线程,每个线程通过实现 Runnable 接口的 run 方法来读取数组中的数据,确保每个数据只被一个线程读取,从而达到了不重复的目的。为了确保线程安全,我们使用了 synchronized 关键字来保证每次只有一个线程能够访问共享资源。
输出示例可能会因为线程启动的顺序而不同,但是每个数据都只会被一个线程读取,且不会重复。
阅读全文
相关推荐
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)