@IT·互联网

进程与线程

2023-12-10  本文已影响0人  我可能是个假开发

一、进程

二、线程

三、对比

四、并发与并行

单核 cpu 下,线程实际还是 串行执行 的。操作系统中有一个组件叫做任务调度器,将 cpu 的时间片(windows下时间片最小约为 15 毫秒)分给不同的程序使用,只是由于 cpu 在线程间(时间片很短)的切换非常快,人类感觉是 同时运行的 。 微观串行,宏观并行 。

image.png

五、同步与异步

调用方角度:

同步:

@Slf4j(topic = "c.Sync")
public class Sync {
    public static void main(String[] args) {
        FileReader.read("/Users/hongcaixia/Documents/music/陈奕迅-孤勇者.mp3");
        log.debug("do other things ...");
    }
}
19:44:08.291 [main] DEBUG c.FileReader - read [陈奕迅-孤勇者.mp3] start ...
19:44:08.327 [main] DEBUG c.FileReader - read [陈奕迅-孤勇者.mp3] end ... cost: 42 ms
19:44:08.328 [main] DEBUG c.Sync - do other things ...

异步:

@Slf4j
public class Async {
    public static void main(String[] args) {
        new Thread(() -> FileReader.read("/Users/hongcaixia/Documents/music/陈奕迅-孤勇者.mp3")).start();
        log.debug("do other things ...");
    }
}
19:45:12.909 [Thread-0] DEBUG c.FileReader - read [陈奕迅-孤勇者.mp3] start ...
19:45:12.909 [main] DEBUG juc.syn.Async - do other things ...
19:45:12.929 [Thread-0] DEBUG c.FileReader - read [陈奕迅-孤勇者.mp3] end ... cost: 23 ms

六、总结

上一篇下一篇

猜你喜欢

热点阅读