## 多线程(一)
定义一个线程类,用户输出前n个正整数。要求:将n个数划分为m个部分。第i个线程输出n个整数中的第i部分。例如:n=20时,m=5,那么创建5个线程,每个线程输出4个数:第1个线程输出1 2 3 4第2个线程输出5 6 7 8第3个线程输出9 10 11 12第4个线程输出13 14 15 16第5个线程输出17 18 19 20可能的结果如下
具体操作代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字n:");
while(sc.hasNext()) {
int n = sc.nextInt();
System.out.println("请输入数字m(m<n):");
int m = sc.nextInt();
//创建m个线程对象
MyThread netAnt[] = new MyThread[m];
for(int i = 0;i < m;i++){
netAnt[i] = new MyThread(n,m,i);
netAnt[i].start();
}
System.out.println("请输入数字n:");
}
}
}
class MyThread extends Thread{
private int n; //表示总共有n个数据需要处理
private int m; //表示总共分配m个线程
private int id; //线程的id
public MyThread() {
this(20,5,0);
}
public MyThread(int n,int m,int id){
this.n = n;
this.m = m;
this.id = id;
}
@Override
public void run(){
int k = n / m;
for(int i = id * k + 1;i <= (id+1) * k;i++){
System.out.println("第" + (id+1) + "个线程:" + i);
}
}
}