一、题目
1. 何为线程和多线程?如何建立多线程?
所谓线程,是指进程中一组程序与相应的操作的控制说明信息的集合。多线程就是指多个线程的并发执行。在Java中建立多线程可以创建自己的类继承自类Threads。
线程是一个程序内部的顺序控制流。多线程是指在同一应用程序中有多个顺序控制流 “同时” 执行。
2. 线程的生命周期由哪几种状态?各状态之间分别用哪些方法切换?
线程在其生命期内有就绪、运行、阻塞、终止状态。
由下图我们可以得出线程有就绪、可运行、不可运行和终止四中基本状态。其中。就绪状态通过start()函数转换成可运行状态,可运行状态通过方法run()令方法终止;或者通过sleep()、wait()变成不可运行状态。同时不可运行状态也可通过阻塞解除或者睡眠时间到达被唤醒从而转化回可运行状态。
3. Java程序实现多线程有哪些途径?
创建一个自己的线程类纪承自Threads类。
Java中创建线程有两种方法:其中一类是继承Thread类;再者就是通过定义实现Runnable接口。
4. 编写两个线程:
第一个线程计算2-1000000之间的质数及个数
第二个线程计算1000000-2000000之间的质数及个数
package xiti12;
import java.io.*;
import java.math.*;
class num{//数类
int number;
num(int num){
number = num;
}
boolean isPrime(int x) {//判断数是否为质数
if(x==1) {
return false;
}
else if(x==2) {
return true;
}
else {
for(int i=2;i<Math.sqrt(x);i++) {
if(x%i==0) {
return false;
}
}
}
return true;
}
}
class myThread extends Thread{//线程类
private String threadName;
int min;
int max;
int count = 0;
myThread(String str,int a,int b){
threadName = str;
min = a;
max = b;
}
public void run() {
try {
for(int i=min;i<=max;i++) {
num i1 = new num(i);
i1.number=i;
if(i1.isPrime(i)) {
count++;
}
}
System.out.println(threadName+"区域内质数个数为:"+count);
}
catch(Exception e){
System.out.println("出现异常");
}
}
}
public class xiti12_4_Thread1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
myThread th1 = new myThread("Thread1",2,1000000);
myThread th2 = new myThread("Thread2",1000000,2000000);
th1.run();
th2.run();
}
}