标题:Java多线程
继承 Thread类
public class java extends Thread{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("Java多线程"+i);
}
}
public static void main(String[] args) {
new java().start();
for (int i = 0; i < 100; i++) {
System.out.println("学习java"+i);
}
}
}
继承Thread类时,重写run方法,调用Threa子类的start()方法。
继承Runnable接口
public class java implements Runnable {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("Java多线程"+i);
}
}
public static void main(String[] args) {
new Thread(new java()).start();
for (int i = 0; i < 100; i++) {
System.out.println("学习java"+i);
}
}
}
在使用Rubbable时,重写run方法,运行时需要使用Thread对象的start()方法,将Runnable子类作为参数传入。
继承Callable接口
import java.util.concurrent.*;
public class java implements Callable<Boolean> {
public String string;
public java(String string){
this.string=string;
}
public Boolean call() {
for (int i = 0; i < 100 ;i++) {
new print().fun(this.string);
}
return true;
}
public static void main(String[] args) {
//创建执行服务
ExecutorService service = Executors.newFixedThreadPool(3);
//提交执行
Future<Boolean> result1 = service.submit(new java("学习"));
Future<Boolean> result2 = service.submit(new java("享受"));
//获取结果
try {
boolean r1 = result1.get();
boolean r2=result2.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
//关闭服务
service.shutdown();
}
class print{
public void fun(String string){
System.out.println(string);
}
}
}
使用Callable时须重写call方法且有返回值默认返回Object,可使用泛型。须在启用时创建线程池,提交任务。