Java 线程和进程(1)

进程和线程

进程 就是操作系统中一个程序运行的周期时间  举个例子就是CPU就是一个工厂  内存就是资源  而一个进程就是一个车间  调用资源完成一系列任务 其中车间工人就相当于线程  所以说一个很明显的区别就是 一个进程包含多个线程  但是线程比进程更加轻量级 创建和销毁更加方便 开销小  如果进程一旦终止 那么其中的线程也会不复存在 

再一个  在资源方面 进程拥有自己的变量资源 而线程是共享这些资源 所以线程之间的通信比进程之间的通信更加方便

多线程 就是同时进行多个任务 比如说在实际应用中 一个Web浏览器上 可以同时下载多个东西 就是多线程的运用 

而当 访问的线程非常多的话 会带来高并发等问题 就是服务器内存不够无法处理请求  

线程


 线程的状态可以分为五种状态 1.其中为创建一个线程  2.线程达到就绪状态  3.当线程被调用的时候为运行状态  4.而当线程没有获取到资源不能运行时则为阻塞状态  5.当线程运行完毕之后 被销毁 也就是终止

线程的创建可以分为四种方式  

第一种 继承Thread类创建线程 覆写run()方法实现线程操作 而启动线程不能直接创建实例然后调用run()方法 而是需要调用start()方法  如果以这个方式实现多线程的话 需要新建多个实体类对象 通过看start()源码的话 就会发现 在start方法中有个判断  只能让线程对象启动一次 而且也会发现调用的是start0本地方法(只声明而未实现)   而start0方法最终调用的还是JVM_startThread方法 而此方法调用的是run方法

第二种  实现Runnable()接口  跟第一个方法相比 解决了单继承的问题  而且Thread类中重载的构造方法可以接收runnable对象 此时也可以使用start()方法  启动线程   Runnable实现的多线程的程序类可以更好的描述出程序共享的概念

第三种  Callable接口  存在于JDK1.5之后追加的包concurrent   这个包主要是用于线程高并发编程使用的  包含很多在高并发操作中使用的类  Callable接口区别于Runnable主要是有返回值

第四种  线程池     将多个创建好的线程不销毁放在一起  通过ThreadPoolExecutor创建一个线程池  线程池可以降低资源消耗降低响应速度 提高线程的可管理性
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的线程进程是操作系统中两个基本的概念,它们在执行上下文中有着不同的含义: 1. **进程**(Process): 进程是操作系统分配资源的基本单位,每个进程都有自己的独立内存空间和系统资源Java程序运行时会创建一个对应的JVM(Java Virtual Machine),JVM中可以有多个并发执行的线程进程的切换是由操作系统内核控制的,切换开销相对较高。 2. **线程**(Thread): 线程是在同一个进程中并行执行的轻量级实体,它们共享同一块内存空间,因此相比于进程线程之间的通信更快、切换更频繁。在Java中,每个Java应用至少有一个主线程,用户可以通过继承Thread类或实现Runnable接口来创建新的线程。 **主要区别**: - **资源占用**:进程拥有独立的内存空间,而线程共享进程的内存,所以线程更节省资源。 - **并发性**:同一进程内的线程可以直接相互访问数据,易于实现并发控制;而不同进程间的数据交换需要通过I/O操作。 - **调度粒度**:进程调度由操作系统进行,线程调度则由JVM或操作系统的用户级线程管理器完成,线程切换更快速。 - **同步与通信**:线程之间通常通过锁、条件变量等同步机制协作,而进程间的通信通常使用管道、消息队列等机制。 **相关问题**: 1. Java如何创建和管理线程? 2. 进程线程在性能优化上有什么考虑? 3. 在并发编程中,为什么要避免不必要的线程创建?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值