函数题:jmu-Java-07多线程-交替执行
有一连串任务,需要两个线程交替执行。线程1执行完任务1后,线程2才能执行任务2,接下来线程1执行任务1,如此交替执行下去。直到所有任务执行完毕。
定义Repo类代表任务仓库,使用字符串代表任务。该类拥有:
**构造方法:**
/*将传递进来的字符串以空格分隔分解为多个不同的任务,并存储起来。如"1 2 3 4 5 6"被分解成6个任务1,2,3,4,5,6*/
public Repo(String items) {
}
**方法:**
int getSize(); //返回Repo包含的任务数量。注意:完成任务的时候,需要将任务删除。
//其他完成任务的方法
定义Worker1与Worker2类,代表两个交替完成任务的类,可以从Repo对象中获取任务。
### main方法如下:
public class Main {
public static void main(String[] args) throws InterruptedException {
Scanner sc = new Scanner(System.in);
Repo repo = new Repo(sc.nextLine());
Thread t1 = new Thread(new Worker1(repo));
Thread t2 = new Thread(new Worker2(repo));
t1.start();
Thread.yield();
t2.start();
sc.close();
}
}
### 输入样例
in
1 2 3 4 5 6 7 8 9
### 输出样例
out
Thread-0 finish 1
Thread-1 finish 2
Thread-0 finish 3
Thread-1 finish 4
Thread-0 finish 5
Thread-1 finish 6
Thread-0 finish 7
Thread-1 finish 8
Thread-0 finish 9
### 裁判测试程序:
java
/*Repo代码*/
/*Worker1代码*/
/*Worker2代码*/
/*系统已有代码,无需关注*/
答案:若无答案欢迎评论
注意:总是在 **while循环** 中使用 **wait()** 方法。
定义Repo类代表任务仓库,使用字符串代表任务。该类拥有:
**构造方法:**
/*将传递进来的字符串以空格分隔分解为多个不同的任务,并存储起来。如"1 2 3 4 5 6"被分解成6个任务1,2,3,4,5,6*/
public Repo(String items) {
}
**方法:**
int getSize(); //返回Repo包含的任务数量。注意:完成任务的时候,需要将任务删除。
//其他完成任务的方法
定义Worker1与Worker2类,代表两个交替完成任务的类,可以从Repo对象中获取任务。
### main方法如下:
public class Main {
public static void main(String[] args) throws InterruptedException {
Scanner sc = new Scanner(System.in);
Repo repo = new Repo(sc.nextLine());
Thread t1 = new Thread(new Worker1(repo));
Thread t2 = new Thread(new Worker2(repo));
t1.start();
Thread.yield();
t2.start();
sc.close();
}
}
### 输入样例
in
1 2 3 4 5 6 7 8 9
### 输出样例
out
Thread-0 finish 1
Thread-1 finish 2
Thread-0 finish 3
Thread-1 finish 4
Thread-0 finish 5
Thread-1 finish 6
Thread-0 finish 7
Thread-1 finish 8
Thread-0 finish 9
### 裁判测试程序:
java
/*Repo代码*/
/*Worker1代码*/
/*Worker2代码*/
/*系统已有代码,无需关注*/
答案:若无答案欢迎评论
注意:总是在 **while循环** 中使用 **wait()** 方法。