6-2 jmu-Java-07多线程-交替执行 (25分)

博客内容描述了如何创建两个线程`Worker1`和`Worker2`,它们从`Repo`类中交替获取并执行任务。`Repo`类接收任务列表,`getSize()`方法返回未完成任务的数量。在`main`函数中,启动两个线程并让它们按照交替顺序执行任务,直到所有任务完成。
摘要由CSDN通过智能技术生成

有一连串任务,需要两个线程交替执行。线程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();
}
}

输入样例

1 2 3 4 5 6 7 8 9

输出样例

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

裁判测试程序:

/Repo代码/

/Worker1代码/

/Worker2代码/

/系统已有代码,无需关注/

import java.util.*;
class Repo {
   
	static ArrayList<String> a = new ArrayList<String>();
	static boolean k=false;
	public Repo(String items) {
   
		String e[] = items.split(
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值