如下简述建立线程的几种方式,不深刻展开,了解则可。java
public class RunnableDemo {
public static void main(String[] args) {
//Thread构造器注入实现类并启动
new Thread(new RunnableWorker()).start();
}
}
//实现Runnable接口
class RunnableWorker implements Runnable {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
}
}
复制代码
public class ThreadDemo extends Thread {
public static void main(String[] args) {
new ThreadDemo().start();
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
}
}
复制代码
public class FutureDemo {
public static void main(String[] args) {
FutureTask<Integer> task = new FutureTask(new CallableWorker());
new Thread(task).start();
try {
System.out.println(task.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
class CallableWorker implements Callable<Integer> {
public Integer call() throws Exception {
return 10;
}
}
复制代码
public class ExecutorsDemo {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//建立线程池
ExecutorService executorService = Executors.newFixedThreadPool(1);
//提交匿名Callable
Future<Integer> future = executorService.submit(new Callable<Integer>() {
public Integer call() throws Exception {
return 10;
}
});
//获取线程执行返回值
System.out.println(future.get());
}
}
复制代码
end.编程
相关阅读:
Java并发编程(一)知识地图
Java并发编程(二)原子性
Java并发编程(三)可见性
Java并发编程(四)有序性
Java并发编程入门(六)synchronized用法
Java并发编程入门(七)轻松理解wait和notify以及使用场景
Java并发编程入门(八)线程生命周期
Java并发编程入门(九)死锁和死锁定位
Java并发编程入门(十)锁优化
Java并发编程入门(十一)限流场景和Spring限流器实现
Java并发编程入门(十二)生产者和消费者模式-代码模板
Java并发编程入门(十三)读写锁和缓存模板
Java并发编程入门(十四)CountDownLatch应用场景
Java并发编程入门(十五)CyclicBarrier应用场景
Java并发编程入门(十六)秒懂线程池差异
Java并发编程入门(十七)一图掌握线程经常使用类和接口
Java并发编程入门(十八)再论线程安全缓存
Java极客站点: javageektour.com/安全