java 多线程

mac2025-09-14  5

package step2; import java.util.Scanner; public class Task { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); //请在此添加实现代码 /********** Begin **********/ MyThread t = new MyThread(num); t.start(); try{ t.join(); }catch(Exception e){ } System.out.println("子线程计算结果为:" + t.result); /********** End **********/ } } //请在此添加实现代码 /********** Begin **********/ class MyThread extends Thread { private int num; public MyThread(int num){ this.num = num; } public int result; public void run(){ int[] arr = new int[2]; arr[0] = 1; arr[1] = 1; for(int i = 2;i< num;i++){ int tmp = arr[1]; arr[1] = arr[0] + arr[1]; arr[0] = tmp; } result = arr[1]; } } /********** End **********/ package step3; public class MyThread implements Runnable { //请在此添加实现代码 /********** Begin **********/ private String name; private Object prev; private Object self; private MyThread(String name,Object prev,Object self){ this.name = name; this.prev = prev; this.self = self; } public void run(){ int count = 5; while(count >0){ synchronized(prev){ synchronized(self){ System.out.print(name); count--; self.notify(); } try{ prev.wait(); }catch(InterruptedException e){ e.printStackTrace(); } } } System.exit(0); // 退出jvm } public static void main(String[] args) throws Exception{ Object a = new Object(); Object b = new Object(); Object c = new Object(); MyThread ta = new MyThread("E",c,a); MyThread tb = new MyThread("D",a,b); MyThread tc = new MyThread("U",b,c); new Thread(ta).start(); Thread.sleep(100); new Thread(tb).start(); Thread.sleep(100); new Thread(tc).start(); } /********** End **********/ } 李响Superb 认证博客专家 机器学习 TensorFlow 图像处理 成为一名优秀的算法工程师⬆️ ,目前还在读软件工程,AI攻防、算法和深度学习方向,微博同名❤️ :李响Superb,(记得关注,有问题微博私信!)我们一起努力呀!
最新回复(0)