MOOC Java第七章单元作业第二题
前言
提示:本题知识点:
Java多线程中的start()、sleep()、join()方法使用案例。
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目
程序填空题:
本题的要求是:
在主线程中创建了一个线程,该线程休眠50ms然后给变量i赋值。主线程要等该子线程结束后获得并输出i的值,使程序的输出结果如下:
javaj=10 ,a.i=10
二、使用步骤
1.填空题代码
代码如下(示例):
public class Java_2 {
public static void main (String[] args) {
try {
Sleep a = new Sleep ();
Thread t = new Thread (a);
t._____________();
t.join();
int j= a.i;
System.out.println("j="+j+",a.i="+a.i);
} catch (Exception e) {}
}
}
class Sleep implements _________________{
int i;
public void run () {
try {
Thread._______________(50);
i= 10;
} catch(InterruptedException e){
}
}
}
2.(参考)答案
代码如下(示例):
public class Java_2 {
public static void main (String[] args) {
try {
Sleep a = new Sleep ();
Thread t = new Thread (a);
t.start(); //(1)t.start();启动子线程
t.join(); //让主线程等待子线程执行完毕再往下走赋值,否者可能在子线程还没跑完就提前赋值。
int j= a.i; //主线程赋值
System.out.println("j="+j+",a.i="+a.i);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
class Sleep implements Runnable{ //(2)此处给出了implements,则使用实现Runnable接口来实现多线程
int i;
public void run () {
try { //异常处理
Thread.sleep(50); //(3)Thread.sleep
i= 10;
} catch(InterruptedException e){
throw new RuntimeException(e);
}
}
}
3.答案直观展示
(1)t.start();
(2)Runnable
(3)sleep
总结
知识点:sleep、start和join方法。
(1)sleep():设置线程睡眠:sleep(毫秒); //单位毫秒ms,需要处理异常
(2)start(): 启动子线程
(3)join(): 让主线程等待着,等子线程执行完毕再往下走,不然在多线程情况下,会出现主线程跑完了,子线程还在跑,而子线程处理的值将毫无意义
若有不正确的地方欢迎指正,一起交流进步,会回评论噢!