Java 多线程基础-概念与创建

基础概念释义:
进程:进程是操作系统中运行的一个任务,软件运行在进程中
线程:软件执行某项任务时,程序执行流的最小单元,也叫轻量级进程
多线程:许多线程在”同时”运行,执行软件中的不同任务

在单处理器系统中,并不存在真正的并发处理,多条线程之间,由CPU分配时间片,每个线程轮流运行.由于计算机处理速度极快,一个线程取得两次时间片的间隔往往极短,在绝大多数情况下用户并不能察觉出来.

而在多处理器系统中,理论上才存在真正的多线程并发技术,程序的多个线程可以分配给不同的处理器执行,也就是所谓的”并行运算”.但实际上,一个系统中运行的程序往往不止一个,在大部分情况下,并不能真正实现严格意义上的并发.

我们一般所讨论的多线程并发,就是指创建多个线程,交替获取CPU的时间片,实现视觉上的并发处理.

Java中创建线程有两种主要方式:
1.继承Thread类,重写run()方法,在run()方法中定义线程需要执行的任务代码.

1.1匿名内部类创建线程类 (此种方式比较常见)

//匿名内部类创建
Thread thread = new Thread() {
    @Override
    public void run() {
        System.out.println("使用匿名内部类Thread创建线程");
    }
};

1.2直接继承Thread类,编写其子类,重写run()方法,创建线程

class MyThread extends Thread{
    @Override
    public void run() {
        System.out.println("继承Thread类,重写run()方法");
        super.run();
    }
}

2.实现Runnable接口,重写其run()方法,在run()方法中定义线程需要执行的任务代码.

2.1使用Lambda表达式创建Runnable实例(语法简介高效,创建方式等效于匿名内部类,此为Java 8新特性,提供了对单方法接口的新实现方式)

Runnable runnable2 = () -> {
    System.out.println("使用Lambda表达式创建Runnable接口实例");
};

2.2使用匿名内部类创建线程(此方式比较少见)

Runnable runnable1 = new Runnable() {
    @Override
    public void run() {
        System.out.println("创建Runnable匿名内部实现类创建线程");
    }
};

2.3创建Runnable接口的实现类,重写run()方法,创建线程(由于Java是单继承当子类已经继承了一个类,无法再继承Thread类时,使用此方式.)

class MyThread implements Runnable{
    @Override
    public void run() {
        System.out.println("继承Thread类,重写run()方法");
    }
}

3.创建线程后的调用
3.1通过Thread类实现的线程,调用其start()方法即可
例如,通过匿名内部类创建线程

new Thread() {
    @Override
    public void run() {
        System.out.println("使用匿名内部类Thread创建线程");
    }
}.start();

3.2通过Runnable接口创建的线程,需要将其传递给一个Thread类实例,调用此实例的start()方法,才能真正开辟一个新的线程,如果只是调用Runnable实现类的run()方法,并不能开辟新线程,只是在当前线程中按照顺序调用run()方法中的代码而已.
例如,通过Lambda表达式,创建语法简洁的Runnable接口实例,传递给Thread实例,实现线程

new Thread(() ->{
    System.out.println("使用Lambda表达式创建Runnable接口实例线程");
}).start();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值