多线程基础概念

1.1线程相关概念

1.1.1进程

        进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是操作系统进行资源分配调度的基本单位。

        可以简单的理解为进程就是操作系统中正在运行的一个程序

        线程(Thread)是进程的一个执行单元

        一个线程就是进程中的一个单一顺序的控制流,进程的一个执行分支

        进程是线程的容器,一个进程至少有一个线程,一个进程也可以有多个线程

        在操作系统中是以进程为单位分配资源,如虚拟存储空间,文件描述符等

        每个线程都有各自的线程栈,自己的线程本地存储。

主线程与子线程

        JVM启动时会创建一个主线程,该主线程负责执行main方法,主线程就是运行main方法的线程。

java中的线程不是孤立的,线程之间存在一些联系,如果线程A 创建了线程B,那么线程A为父线程,线程B为子线程。

串行与并发

        串行(Seqential):所有任务逐个完成(一个任务结束后才开始下一个任务)

        并发(Concurrent)任务交替执行(在等待任务A 完成的过程中,任务B就开始执行了)

        并行(Parallel)所有任务同时开始执行,以最后那个完成的任务的结束为结束,总耗时取决于最后完成的那个任务的执行时间

         并发可以提高对事务的处理效率,

         并行是一种更为严格,理想的并发

从硬件的角度来说:

如果是单核CPU,一个处理器一次只能执行一个线程的情况下,处理器可以使用时间片轮转技术,可以让CPU快速的在各个线程之间进行切换,对于用户来说,感觉多个线程在同时执行。

如果是多核CPU,可以在不容的线程中分配给不容的CPU内核。

线程的创建与启动:

在java中创建一个线程就是创建一个Thread类的对象(实例化)。

Thread类中有两个常用的构造方法 Thread()和 Thread(Runnable)

对应创建线程的两种方式

        1.定义一个Thread类的子类

        2. 定义一个Runnable接口的实现类

        这两种创建线程的方式没有本质上的区别。

代码:

/**
 * 创建一个线程
 * 1.定义一个类继承Thread
 * 2.重写父类Thread的run方法(run()方法体中的代码就是子线程要执行的任务)
 * 3.创建子线程对象
 * 4.启动线程
 */

public class MyThread extends Thread{
    @Override
    public void run() {
        super.run();
        System.out.println("这是子线程的内容");
    }
}

测试类:

package threadTest;

public class Test {
    public static void main(String[] args) {
        System.out.println("JVM启动main线程,main线程执行main方法");
        //创建子线程对象
        MyThread myThread = new MyThread();
        //调用线程的start()方法来启动线程
        //启动线程的实质就是请求JVM运行相应的线程,线程的运行时机由线程调度器(Scheduler)决定
        //注意:start()方法调用结束并不意味着子线程开始运行
        //新开启的线程会执行run()方法
        //如果我们开启了多个线程,start()调动的顺序并不一定是线程启动的顺序
        myThread.start();
        System.out.println("main线程后面其他的代码。。。");
    }
}

运行结果:

JVM启动main线程,main线程执行main方法
main线程后面其他的代码。。。
这是子线程的内容

Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值