多线程(打印ABCD)

来源:互联网 发布:扔玻璃球 算法 编辑:程序博客网 时间:2024/06/05 10:28


描述
问题描述:有4个线程和1个公共的字符数组。线程1的功能就是向数组输出A,线程2的功能就是向字符输出B,线程3的功能就是向数组输出C,线程4的功能就是向数组输出D。要求按顺序向数组赋值ABCDABCDABCD,ABCD的个数由线程函数1的参数指定。[注:C语言选手可使用WINDOWS SDK库函数]
接口说明:
void init();  //初始化函数
void Release(); //资源释放函数
unsignedint__stdcall ThreadFun1(PVOID pM)  ; //线程函数1,传入一个int类型的指针[取值范围:1 – 250,测试用例保证],用于初始化输出A次数,资源需要线程释放
unsignedint__stdcall ThreadFun2(PVOID pM)  ;//线程函数2,无参数传入
unsignedint__stdcall ThreadFun3(PVOID pM)  ;//线程函数3,无参数传入
Unsigned int __stdcall ThreadFunc4(PVOID pM);//线程函数4,无参数传入
char  g_write[1032]; //线程1,2,3,4按顺序向该数组赋值。不用考虑数组是否越界,测试用例保证
知识点 字符串,循环,链表,队列,栈,查找,搜索,排序,树,图,数组,函数,指针,枚举,位运算,结构体,联合体,文件操作,递归
运行时间限制 10M
内存限制 128
输入
输入一个int整数
输出
输出多个ABCD
样例输入 10

样例输出ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD



<span style="font-family:Courier New;font-size:14px;">import java.util.Scanner;public class Main{private static String status = "A";public static void main(String[] args) {Scanner sc = new Scanner(System.in);final int num = sc.nextInt();sc.close();new Thread(new Runnable() {@Overridepublic void run() {for (int i = 0; i < num;) {synchronized (status) {if (status.equals("A")) {System.out.print("A");status = "B";i++;}}}}}).start();new Thread(new Runnable() {@Overridepublic void run() {for (int i = 0; i < num;) {synchronized (status) {if (status.equals("B")) {System.out.print("B");status = "C";i++;}}}}}).start();new Thread(new Runnable() {@Overridepublic void run() {for (int i = 0; i < num;) {synchronized (status) {if (status.equals("C")) {System.out.print("C");status = "D";i++;}}}}}).start();new Thread(new Runnable() {@Overridepublic void run() {for (int i = 0; i < num;) {synchronized (status) {if (status.equals("D")) {System.out.print("D");status = "A";i++;if (i == num)System.out.println();}}}}}).start();}}</span>


0 0
原创粉丝点击