题目
编写一个程序,创建三个任务以及三个运行这些任务的线程:
- 第一个任务打印字母a100次
- 第二个任务打印字母b100次
- 第三个任务打印1~100的整数
如果运行这个程序,则三个线程将共享CPU,并且在控制台上轮流打印字母和数字。
(因为现在电脑的CPU都太快了,100个数和字母根本看不出来CPU在交替执行线程,所以我将数字定为10000
效果
代码
package P1;
public class thread1 {
public static void main(String[] args){
//创建三个任务
Runnable printA=new PrintChar('a',100);
Runnable printB=new PrintChar('b',100);
Runnable print100=new PrintNum(100000);
//创建线程
Thread thread3=new Thread(print100);
Thread thread1=new Thread(printA);
Thread thread2=new Thread(printB);
//开始线程
thread1.start();
thread2.start();
thread3.start();
}
}
class PrintChar implements Runnable{
private char charToPrint;//需要打印的字母
private int times;//需要打印的次数
public PrintChar() {
}
public PrintChar(char charToPrint, int times) {
this.charToPrint = charToPrint;
this.times = times;
}
@Override
public void run() {
for (int i = 0; i <= times; i++) {
System.out.println(charToPrint);
}
}
}
class PrintNum implements Runnable{
private int lastNum;
public PrintNum(int lastNum) {
this.lastNum = lastNum;
}
@Override
public void run() {
for (int i = 0; i < lastNum; i++) {
System.out.println(" " + i);
}
}
}
思路
该程序创建了三个任务。为了同时运行它们,创建了三个线程。调用start()方法启动第一个线程,那么其中的run()方法就会被执行。当run()方法执行完毕之后,线程就终止了。