java中进程和线程

1、介绍

进程(Process)

  • 进程是程序在计算机中的一次执行活动,是程序的一次运行实例。每个进程都拥有独立的内存空间,包括代码、数据、堆栈等,同时还包含了进程控制块(PCB)用于管理进程的状态、优先级、资源占用等信息。
  • 进程的作用是实现程序的并发执行,使得多个程序能够同时运行,每个进程之间相互独立,互不影响。进程之间通过进程间通信(IPC)来实现数据交换和协作。
  • 进程在操作系统中扮演着资源管理的重要角色,操作系统通过进程管理来分配和回收系统资源,保证各个进程能够有序地运行。

线程(Thread)

  • 线程是进程中的执行单元,一个进程可以包含多个线程,它们共享进程的资源(如内存空间、文件描述符等),但拥有独立的执行路径和栈空间。
  • 线程的作用是实现程序的并发执行和提高程序的响应速度。多线程编程可以让程序在多个线程之间并行执行,提高系统的利用率和性能。
  • 线程在操作系统中扮演着轻量级的执行单位,相比进程更加灵活和高效,可以更快地创建和销毁,更方便地实现并发编程和任务分配

1.1进程和线程的关系 

  • 进程是程序的一次执行活动,是程序的运行实例,而线程是进程中的执行单元,一个进程可以包含多个线程。
  • 在操作系统中,每个进程至少包含一个主线程,可以创建额外的线程来实现并发执行。
  • 线程共享进程的资源,包括内存空间、文件描述符等,多个线程之间可以方便地共享数据和通信。
  • 区别

  • 资源占用
    • 进程拥有独立的内存空间和资源,每个进程之间相互独立,资源互不干扰,而线程共享进程的资源,包括内存、文件等,线程之间可以方便地共享数据和通信。
  • 切换开销
    • 进程切换的开销比线程切换大,因为进程切换需要切换整个进程的上下文,包括内存空间、寄存器状态等,而线程切换只需要切换线程的上下文,开销较小。
  • 并发性
    • 进程之间是相互独立的,每个进程有自己的执行路径和资源,进程的并发性体现在多个进程之间的并发执行;而线程共享进程的资源,线程的并发性体现在多个线程之间的并发执行。
  • 创建销毁
    • 创建和销毁进程的开销比较大,因为进程拥有独立的资源空间,需要分配和回收资源;而创建和销毁线程的开销比较小,因为线程共享进程的资源,只需要分配和回收线程的执行路径即可。

2、线程中的常用方法 

1.创建线程类:

1.1创建类 – MyThread

1.2继承Thread类

1.3重写run方法

2.启动线程:

2.1创建线程类的对象:MyThread thread = new MyThread();

2.2启动线程:thread.start();

代码展示:

MyTread类

public class MyThread  extends Thread{


	@Override
	public void run() {
		System.out.println("调用了run方法哦");
	}
}

测试类

public class Test01 {

	public static void main(String[] args) {
		
		//创建子线程
		MyThread thread = new MyThread();
		
		//启动线程
		thread.start();
	}
}

 3、多线程抢夺资源

需求:编写一个多线程的应用程序,主线程打印1-100之间的偶数,子线程打印1-100之间的奇数,观察其输出的结果,体会多线程互相争抢资源的场景

子线程

public class MyThread  extends Thread{

	@Override
	public void run() {
	for (int i = 1; i <=100; i=i+2) {
		System.out.println("子线程:" + i);
		}
	}
}

主线程:

public class Test01 {

	public static void main(String[] args) {
		
		MyThread thread = new MyThread();
		thread.start();//启动线程 -- 启动后,主线程抢到资源后代码就会向下执行
		
        Thread main = new Thread();
        for (int i = 2; i <=100 ; i=i+2) {
            System.out.println("主线程"+i);
        }
        thread.start();
       
	}
}

 输出结果

 总结

学习完进程和线程明白了多线程的优点;

  1. 提高程序响应速度:多线程可以使程序在执行过程中响应用户的操作,提高用户体验。
  2. 提高系统资源利用率:多线程可以充分利用多核处理器的性能,提高系统资源利用率。
  3. 简化编程模型:多线程可以将复杂任务分解成多个线程,简化程序设计和维护。
  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值