栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java并发编程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java并发编程

进程与线程 并行与并发

一般将这种线程轮流使用 CPU 的做法称为并发,concurrent(同一时间应对多件事情的能力)
多核CPU下,每个核都可以调度运行线程,这时候线程可以是并行的(同一时间动手做多件事情的能力)

应用

从方法调用的角度,如果
需要等待结果返回,才能继续运行就是同步
不需要等待结果返回,就能继续运行的就是异步

线程创建的三种方式
import lombok.extern.slf4j.Slf4j;

@Slf4j(topic = "c.Test1")
public class Test1 {
    public static void main(String[] args) {
        Thread t = new Thread(){
            public void run() {
                log.debug("running");
            }
        };
        t.setName("t1");
        t.start();

        log.debug("running");
    }
}
import lombok.extern.slf4j.Slf4j;

@Slf4j(topic = "c.Test2")
public class Test2 {
    public static void main(String[] args) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                log.debug("running");
            }
        };
        Thread t = new Thread(r, "t2");
        t.start();
    }
}
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

@Slf4j(topic = "c.Test3")
public class Test3 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        FutureTask task = new FutureTask<>(new Callable() {
            @Override
            public Integer call() throws Exception {
                log.debug("running...");
                Thread.sleep(1000);
                return 100;
            }
        });

        Thread t1 = new Thread(task, "t3");
        t1.start();

        log.debug("{}",task.get());
    }
}
线程上下文切换

cpu不再执行当前线程,转而执行另一个线程

sleep和yield

调用sleep会让当前线程从Running进入Timed Waiting状态
调用yield会让当前线程从Running进入Runnable就绪状态,然后调度执行其他线程

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024774.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号