线程·拔高·壹

1 并发和并行

1.1 并发

当系统只有一个CPU时,而多个线程无法同时在一个CPU上运行,此时只能把CPU的运行时间划分成多个时间片段,在一个线程运行时其余线程处于挂起状态,诸如此称之为并发

1.2 并行

当系统有多个CPU时,当一个CPU处理一个线程,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时运行,诸如此称之为并行

2 程序、进程、线程

2.1 程序

程序:为完成某个特定任务的指令集合,可以使静态的代码、静态的对象。

2.2 进程

进程:是程序的一次执行过程,一个程序至少有一个进程,或者是一个正在运行的程序,是一个动态的过程,拥有自己的声明周期。

2.3 线程

线程:进程可进一步细化为线程,一个进程一般有多个线程,线程就是程序执行的一条路径,可以有多条路径(多线程)。

2.3.1 守护线程

守护线程:是一个服务线程,用来监视和服务其他线程。

  • 特点:主线程退出后,不管线程有没有执行完成,都会退出。

2.4 Java多线程

2.4.1 多线程的创建方式

2.4.1.1 继承Thread类,重写run方法
public class MyThread extends Thread {

    @Override
    public void run() {
        System.out.println("MyThread...run...");
    }

    
    public static void main(String[] args) {

        // 创建MyThread对象
        MyThread t1 = new MyThread() ;
        MyThread t2 = new MyThread() ;

        // 调用start方法启动线程
        t1.start();
        t2.start();

    }
    
}
2.4.1.2 实现runnable接口,重写run方法
public class MyRunnable implements Runnable{

    @Override
    public void run() {
        System.out.println("MyRunnable...run...");
    }

    public static void main(String[] args) {

        // 创建MyRunnable对象
        MyRunnable mr = new MyRunnable() ;

        // 创建Thread对象
        Thread t1 = new Thread(mr) ;
        Thread t2 = new Thread(mr) ;

        // 调用start方法启动线程
        t1.start();
        t2.start();

    }

}
2.4.1.3 实现callable接口,重写call方法

2.4.1 线程的生命周期

状态解释
NEW创建线程,未启动即还没有调用start方法
runable可运行状态, 当调用start方法,线程处于可运行状态,等待CPU的调度
blocked阻塞状态,当一个线程试图获取一个对象锁,但是这个对象被其他线程持有,则该线程进入阻塞状态,只有当该线程持有锁是,该线程才是可运行状态
waiting等待状态
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值