进程、线程的概念和区别和实现多线程两种常用方法

一、进程、线程、多线程

1.进程:

  • 是系统中正在运行的一个程序,程序一旦运行就是一个进程;
  • 是系统资源分配的独立实体,每个进程都拥有独立的地址空间;
  • 一个进程无法访问另一个进程的变量和数据结构

2.线程:

  • 是进程的一个实体;
  • 是进程的一条执行路径;

3.进程与线程的区别:

  • 进程是资源分配最小单位,线程是程序执行最小单位;
  • 进程有独立的地址空间,每启动一个进程,系统都会分配一个地址空间,
    而线程没有独立的地址空间,它使用相同的地址空间来进行数据共享;
  • CPU切换一个线程比切换进程花费小;
  • 线程占用资源比进程少很多;
  • 线程之间可以共享数据,而进程不能;

4.多线程:

多线程就是分时利用CPU,宏观上让所有线程一起执行 ,也叫并发

二、run()和start()方法的区别

1.run()方法:

run()方法当做普通方法的方式调用。程序还是要顺序执行,等待run方法体代码执行完毕后,才可以继续执行下面的代码;程序中只有主线程这一个线程,程序执行路径只有一条。

2.start()方法:

此时无需等待run方法体代码执行完毕,可以直接继续执行下面的代码;**通过Tread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。**等待run()方法运行结束,此线程终止。

实现线程的两种常用方法

1.继承Thread类

//自定义线程类
public class ThreadDemo extends Thread {
    public ThreadDemo(){
    }

    public ThreadDemo(String name){
        super(name);
    }

    @Override
    public void run() {
        for(int i = 0; i < 6; i++){
            System.out.println("线程启动:"+Thread.currentThread().getName()+i);
        }
    }
}

//主函数
public static void main(String[] args) {
        /*
            当使用run()开启线程的时候,只使用主线程这一个线程
         */

        //创建2个子线程
        ThreadDemo td1 = new ThreadDemo("jhh");
        ThreadDemo td2 = new ThreadDemo("whh");
        //开启线程(然后会调用线程中的run方法体,run方法体运行完,线程结束)
        td1.start();
        td2.start();
    }

2.实现Runnable接口:

//自定义类实现Runnable接口
public class RunnableDemo implements Runnable {
    @Override
    public void run() {
        for(int i = 0; i < 10; i++){
            System.out.println("线程启动:"+Thread.currentThread().getName() +"---->"+i);
        }
    }
}

public static void main(String[] args) {
    // 创建线程
        RunnableDemo rd = new RunnableDemo();
    // 将创建的线程作为参数传递给Thread
        Thread th = new Thread(rd);
    
        RunnableDemo rd2 = new RunnableDemo();
        Thread th2 = new Thread(rd2);
    
        th.start();
        th2.start();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值