并发编程----基本概念以及启动线程的三种方式

基本概念

1.CPU的核心数 和线程数的关系

核心数 :线程数 = 1:1 ; 超线程技术 1:2

2.CPU 时间片轮转机制

RR调度:给每一个进程分配一个时间段,这个时间段被称为该进程的时间片,进程允许运行的时间。过了这段时间片,会上下文切换。

3.什么是进程和线程

进程:程序运行资源分配的最小单位,一个进程内部可以有多个线程,多个线程会共享这个进程的资源,进程与进程之间相互独立

线程:cpu 调度的最小单位,本身不能独立运行,要依赖于进程。

4.澄清并行和并发

并行:同一时间段,处理事情的能力
并发:与时间单位相关的,单位时间内,处理事情的总数。

举个例子:一个食堂 有8个窗口,每个人打饭 需要30秒钟,所以一分钟内打饭16个人。

该食堂并发度为:16

并行度为:8

5.高并发编程的意义,好处与注意事项
  • 共享资源,提高效率。
  • 存在冲突,死锁
  • 太多的线程,就有可能搞垮机器

启动线程的三种方式:

  • 类 Thread
  • 接口 Runnable
  • 接口 Callable
public class NewThread {

    private static class UseThread extends Thread {
        @Override
        public void run() {
            System.out.println("I am extends Thread");
        }
    }

    /* 实现Runnable接口*/
    private static class UseRun implements Runnable {

        @Override
        public void run() {
            System.out.println("I am implements Runnable");
        }
    }

    /* 实现Callable接口,允许有返回值 */
    private static class UseCall implements Callable<String> {

        @Override
        public String call() throws Exception {
            System.out.println("I am implements Callable");
            return "CallResult";
        }
    }


    public static void main(String[] args) throws ExecutionException, InterruptedException {
        UseRun useRun = new UseRun();
        new Thread(useRun).start();

        UseThread useThread = new UseThread();
        useThread.start();

        UseCall useCall = new UseCall();
        FutureTask<String> stringFutureTask = new FutureTask<String>(useCall);
        new Thread(stringFutureTask).start();
        System.out.println(stringFutureTask.get());
    }
}

运行结果:
在这里插入图片描述

学习年限不足,知识过浅,说的不对请见谅。

世界上有10种人,一种是懂二进制的,一种是不懂二进制的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值