上下文切换与死锁

多线程一定快吗?


答案是不一定。当并发执行的累积数量一定以内,并行会比串行执行要慢,此处用的测试用例是累加,那么为什么会出现这种情况呢?

这是因为线程的创建的上下文切换的开销

上下文切换

单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制,因为时间片非常短,所以CPU通过不停切换线程执行的,时间一般是即使毫秒(ms)


public class ConcurrencyTest {
    private  static final  long count = 100001;
    
    public static void main(String[] args) throws InterruptedException{
        concurrency();
        serial();
    }

    private static void concurrency() throws InterruptedException {
        long start = System.currentTimeMillis();
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                int a = 0;
                for(long i = 0;i

你可能感兴趣的:(上下文切换与死锁)