Thread类派生出一个子类,该子类的功能是完成指定参数阶乘的运算。
package step1;
import java.lang.Thread;
public class MyThread extends Thread {
private int num;//任务就是在子线程中计算num的阶乘
public MyThread() {
this(0);
}
//constructor,创建实例的时候初始化参数
public MyThread(int num) {
this.num = num;
}
@Override
public void run() {
//重写run方法,在子线程中想要执行的代码写在run方法中
int result = 1;//result保存计算出的结果
for(int i = num; i>=1;i--){
result = result*i;
}
//直接输出结果
System.out.println(result);
}
}
第2关:通过Runnable接口创建线程
创建一个实现了Runnable接口的类,并用该类的一个实例去实例化Thread类,从而得到一个子线程,并执行它。
该子线程的主要功能是计算给定参数的阶乘并输出。
package step2;
public class MyRunnable implements Runnable {
private int num;
public MyRunnable() {
this(0);
}
public MyRunnable(int num) {
this.num = num;
}
@Override
public void run() {
//重写run方法,在子线程中想要执行的代码写在run方法中
int result = 1;//result保存计算出的结果
for(int i = num; i>=1;i--){
result = result*i;
}
//直接输出结果
System.out.println(result);
}
}
第3关:使用匿名Thread和Runnable对象创建线程
创建一个子线程,计算并输出给定参数的阶乘。要求使用匿名Thread对象与匿名Runnable对象。
package step3;
public class ThreadHelper {
static public void calcOnNewThread(int num) {
//使用Thread匿名对象以及Runnable匿名对象创建并执行子线程
new Thread(new Runnable() {
@Override public void run() {
int result = 1;
for(int i = num; i>=1;i--){
result = result*i;
}
//直接输出
System.out.println(result);
}
}).start();
}
private ThreadHelper() {
throw new UnsupportedOperationException(this.getClass().getSimpleName() + " can not be instantiated.");
}
}
第4关:Thread创建综合
输入3个整数a、b、c分别计算其阶乘并输出。特别的,要求按输入顺序的倒序进行输出。而且必须在主线程结束之后进行输出。
package step4;
//注意文件名,这里应该写MyRunnable类
class MyRunnable implements Runnable{
int num;
public MyRunnable(int num){
this.num = num;
}
public void run(){
int result = 1;
try{
Thread.sleep(200);
}
catch(InterruptedException e){
System.out.print("");
}
for(int i = num; i>=1;i--){
result = result*i;
}
System.out.println(result);
}
}



