JavaEE初阶--进程与线程的区别与联系

目录

一.进程

进程的概念:

二.线程

线程的概念:

三.进程与线程的区别

四.进程与线程的联系

五.线程的实现

1.继承Thread

2.实现Runnable

3.匿名内部类

4.匿名内部类(针对Runnable)

5.lambda表达式

六.总结 


一.进程

进程的概念:

  一个程序运行起来,就会对应一个进程,进程也是系统分配资源的基本单位。尤其是对于Java来说,IDEA本身就是一个进程。当点击IDEA中的运行按钮,IDEA就会创建出一个新的进程来,运行所写的Java代码。

  关于进程的其他相关知识可以观看我的上一篇博客:JavaEE初阶--进程调度的基本过程-CSDN博客

二.线程

线程的概念:

  线程,可以理解成“进程的一部分”,一个进程中可以包含一个线程,或者多个线程。如果没有线程,只有进程的话,如果一个服务器,频繁的有客户进行访问,纳闷服务器需亚奥频繁的创建和销毁进程,非常浪费资源。引入线程之后,我们可以说进程中的一个PCB就是一个线程。

举个简单的例子:假设有100个任务,如果没有线程只有进程的话,那么该进程就需要完成这100个任务,但如果有10个线程,那每个线程分配到的任务就只有10个,大大节约了资源。当然,我们并不能无限引入线程,因为这个时候,线程调度开销就会非常明显,程序的性能可能不升反降。还有一种可能是不同的线程去争夺同一个任务,这会导致线程安全问题,也就是我们所说的BUG。

三.进程与线程的区别

定义:进程是程序的一次执行过程,而线程是进程中的一个执行单元,是程序执行的最小单位。

资源分配:进程是操作系统分配资源的基本单位,包括内存空间等资源;而线程则共享同一进程中的资源,包括内存空间等。

独立性:进程拥有独立的内存空间,一个进程的崩溃不会影响其他进程,而线程共享相同的内存空间,一个线程的崩溃可能会导致整个进程的崩溃。

四.进程与线程的联系

1.进程可以包含多个线程,一个进程至少包含一个主线程。

2.线程共享进程的资源,可以提高多任务处理的效率。

3.进程和线程都可以进行并发操作,同时处理多个任务。

五.线程的实现

在IDEA中,常见5种线程的实现

1.继承Thread

class MyThread extends Thread{
    public void run(){

    }
}


public class Demo1rev {
    public static void main(String[] args) {
        Thread t=new MyThread();
        t.start();
    }
}

2.实现Runnable

class MyRunnable implements Runnable{
    public void run(){

    }
}

public class Demo2Rev {
    public static void main(String[] args) {
        Thread t=new Thread(new MyRunnable());
        t.start();
    }
}

3.匿名内部类

public class Demo3Rev {
    public static void main(String[] args) {
        new Thread(){
            public void run(){

            }
        }.start();
    }
}

4.匿名内部类(针对Runnable)

public class Demo4 {
    public static void main(String[] args) {
        Thread t=new Thread(new Runnable() {
            public void run() {
            
            }
        });

        t.start();
       
    }
}

5.lambda表达式

public class Demo5 {
    public static void main(String[] args) {
        Thread t=new Thread(() ->{
         
        });

        t.start();
    }
}

以上就是5种线程的实现,其实在平常学习中,使用最多的就是lambda表达式这种,但5种方法都要学会。

六.总结 

  本篇文章介绍了线程与进程的区别以及联系,并介绍了5种多线程的实现方法。欢迎各位在评论区进行讨论,文章有什么不足也可以指出,谢谢大家观看!

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值