标签:ted res shu run 通过 接口 淘宝 extend except
多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。
进程:执行程序一次的执行过程,动态的,由系统资源分配的单位。
线程:是cpu调度和执行的单位。
进程包括多个线程,至少有一个线程。
真正的多线程是有多个cpu,即多核。
模拟出来的多线程是一个cpu,在一个时间点只能执行一个代码,因为切换的很快,所以就有了同时执行的错觉。
/**
* 多线程 第一种 通过Thread实现
*/
public class ThreadDemo01 extends Thread {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("我在看代码--"+i);
}
}
public static void main(String[] args) {
ThreadDemo01 t1 = new ThreadDemo01();
// 普通的调用方法启动,按照顺序执行
// t1.run();
t1.start(); //正确的线程启动,不一定立即启动,等待cpu调度
for (int i = 0; i < 100; i++) {
System.out.println("我在学习--"+i);
}
}
}
public class RunnableDemo01 implements Runnable{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("我是子线程--"+i);
}
}
public static void main(String[] args) {
RunnableDemo01 runnable = new RunnableDemo01();
Thread thread = new Thread(runnable);
thread.start();
for (int i = 0; i < 100; i++) {
System.out.println("我是主线程--"+i);
}
}
}
/**
* 通过Callable 实现多线程
* 主要环节在四个注释的地方
*/
public class CallableDemo01 implements Callable<Boolean> {
private String name;
public CallableDemo01(String name) {
this.name = name;
}
@Override
public Boolean call() throws Exception {
for (int i = 0; i < 100; i++) {
System.out.println("我在看"+name+"--"+i);
}
return true;
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
CallableDemo01 t1 = new CallableDemo01("淘宝");
CallableDemo01 t2 = new CallableDemo01("京东");
CallableDemo01 t3 = new CallableDemo01("苏宁易购");
//创建执行服务
ExecutorService ser = Executors.newFixedThreadPool(3);
//提交执行
Future<Boolean> r1 = ser.submit(t1);
Future<Boolean> r2 = ser.submit(t2);
Future<Boolean> r3 = ser.submit(t3);
// 获取结果
Boolean res1 = r1.get();
Boolean res2 = r2.get();
Boolean res3 = r3.get();
//关闭服务
ser.shutdownNow();
for (int i = 0; i < 100; i++) {
System.out.println("我正在看着你们--"+i);
}
}
}
把一个任务交给多个线程来运行,就好比田径场分成1,2,3...等跑道,具有通用性。
标签:ted res shu run 通过 接口 淘宝 extend except
原文地址:https://www.cnblogs.com/gbhh/p/13768069.html