线程的创建
答:继承Thread类;实现Runnable接口;使用Callable和Future创建线程
一般推荐采用实现接口的方式来创建多线程,java单继承,继承thread就不能继承其它父类
1)public class MyThread extends Thread{//继承Thread类
public void run(){
//重写run方法
}
}
public class Main {
public static void main(String[] args){
new MyThread().start();//创建并启动线程
}
}
2)public class MyThread2 implements Runnable {//实现Runnable接口
public void run(){
//重写run方法
}
}
public class Main {
public static void main(String[] args){
//创建并启动线程
MyThread2 myThread=new MyThread2();
Thread thread=new Thread(myThread);
thread().start();
//或者 new Thread(new MyThread2()).start();
}
}
3)class CallableTest implements Callable<Boolean>{
private int prime=0;
public CallableTest(int prime){
this.prime=prime;
}
@Override
public Boolean call() throws Exception {
//计算prime是否是素数
if(prime<2){
return false;
}
if(prime==2 || prime==3){
return true;
}
for(int i=2;i<=Math.floor(Math.sqrt(prime));i++){
if(prime%i==0){
return false;
}
}
return true;
}
}
public class CallableThreadTest {
public static void main(String[] args) {
//创建Callable对象
CallableTest callableTest=new CallableTest(15);
//创建一个FutureTask任务
FutureTask<Boolean> task=new FutureTask<Boolean>(callableTest);
//启动线程
new Thread(task).start();
//获取线程的返回值
try {
System.out.println("is prime="+task.get());//一直阻塞,直到返回值
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("执行完毕");
}
}