Java任务、线程基本概念:
-
实现Runnable接口:
通过实现Runnable接口创建任务,重写run方法。
// 通过实现接口方式创建任务
public class DemoTask implements Runnable{
@Override
public void run() {
System.out.println("task test:" + new Date());
}
}
// 通过继承方式创建任务
public class DemoThread extends Thread {
@Override
public void run() {
System.out.println("task test:" + new Date());
}
}
-
继承Thread类:
// 通过实现接口方式:
new Thread(new DemoTask()).start();
new Thread(new DemoTask(), "threadName").start();
// 通过继承方式
new DemoThread().start();
-
实现Callable接口:
public class DemoCallable implements Callable<String> {
@Override
public String call() throws Exception {
return " callable test:" + new Date();
}
// 通过ExecutorService执行, 返回Future后通过get()获取返回值
public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService executorService = Executors.newCachedThreadPool();
Future<String> submit = executorService.submit(new DemoCallable());
System.out.println(submit.get());
executorService.shutdown();
}
}
线程状态:
Java内存模型:
线程同步处理: