并发编程

并发编程(一):线程的基本应用

2020-03-30  本文已影响0人  codeMover

进程和线程

进程

线程

进程和线程对比

并行和并发

并发

并行

并发和并行比较

创建和运行线程

方法一:继承Thread类

@Slf4j(topic = "ants.extendThread")
public class ExtendThread extends Thread{
    @Override
    public void run() {
        log.debug("创建线程一:继承Thread类,重写run方法");
    }

    public static void main(String[] args) {
        ExtendThread extendThread = new ExtendThread();
        extendThread.setName("t1");
        extendThread.start();
    }
}

方法二:实现Runnable接口

@Slf4j(topic = "ants.implRunnable")
public class ImplRunnable implements Runnable {
    @Override
    public void run() {
        log.debug("实现Runnable接口,重写run(),创建线程");
    }

    public static void main(String[] args) {
        Thread thread = new Thread(new ImplRunnable());
        thread.setName("t1");
        thread.start();
    }
}

继承Thread类和实现Runnable接口创建线程比较

方法三:实现Callable接口

@Slf4j(topic = "ants.ImplCallable")
public class ImplCallable implements Callable<Integer> {
    @Override
    public Integer call() throws Exception {
        log.debug("run-----");
        Thread.sleep(1000);
        return 10;
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        FutureTask<Integer> task = new FutureTask(new ImplCallable());
        Thread t = new Thread(task);
        t.start();
        Integer o = task.get();
        log.debug("result value:{}",o);
    }
}

查看进程方法

windows

Linux

Java

线程运行原理

栈帧图解

栈帧图解.png

线程上下文切换

上一篇 下一篇

猜你喜欢

热点阅读