热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java主进程和线程_Java并发(1):进程和线程

1、进程和线程的概念理解搞开发是用程序去完成一个功能,这个功能一般由一个进程实现(也可以由多个进程实现,如谷歌浏览器会开多个进程,在win

1、进程和线程的概念理解

搞开发是用程序去完成一个功能,这个功能一般由一个进程实现(也可以由多个进程实现,如谷歌浏览器会开多个进程,在windows任务管理器中可以看到,而Eclipse只有一个进程);

这个进程中不同的子功能可以使用不同的线程去完成(如聊天程序中,一个线程发送消息,一个线程接收消息)。

PS:线程是一个轻量级的进程。

进程是对于操作系统的程序运行单元,线程是对于编程语言的运行单元。(如可以用C或Java开发一个单进程的聊天程序,这个进程可以在操作系统的任务管理器中看到;而不同的编程语言实现线程的方式不同,但都能用多线程来完成程序聊天的功能)

2、Java中可以通过Process创建一个操作系统进程,Thread创建一个线程。

PS:进程使用操作系统的任务管理器可以看到;线程的状态在创建改线程的主线程中才能看到。

3、进程和线程的状态

操作系统进程状态: 运行态, 就绪态, 等待态( 阻塞态、封锁态、睡眠态)

java中线程的状态(java.lang.Thread.State):New/Runnable/Blocked/Wait/Time_wait/Terminated

4、通过main方法理解线程与进程

package com.demo;

public class Test02 {

public static void main(String[] args) {

Ps p1 = new Ps();

p1.start();

Ps p2 = new Ps();

p2.start();

while(true){

System.out.println(System.currentTimeMillis()+"\t"+Thread.currentThread().getName());

}

}

}

class Ps extends Thread{

@Override

public void run() {

while(true){

System.out.println(System.currentTimeMillis()+"\t"+this.getName());

}

}

}

在命令行编译执行,在任务管理器可以看到java.exe进程

129c8885f9ecaac28441d1eb56da600d.png

而在main线程中,可以获取子线程的运行参数。

PS:执行java com.demo.Test02 运行main函数时,操作系统新创建一个新的JVM并分配资源(内存/cpu等)给该进程,然后JVM加载字节码文件并解释执行(运行main方法);执行过程中在main线程中又创建两个子线程并启动子线程(在main线程中可以查看子线程的运行参数)。



推荐阅读
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 1Lock与ReadWriteLock1.1LockpublicinterfaceLock{voidlock();voidlockInterruptibl ... [详细]
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
  • 本文介绍了基于c语言的mcs51单片机定时器计数器的应用教程,包括定时器的设置和计数方法,以及中断函数的使用。同时介绍了定时器应用的举例,包括定时器中断函数的编写和频率值的计算方法。主函数中设置了T0模式和T1计数的初值,并开启了T0和T1的中断,最后启动了CPU中断。 ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 本文介绍了Java虚拟机中的垃圾收集器,包括年轻代收集器Serial收集器、ParNew收集器、Parallel Scavenge收集器,以及老年代收集器Serial Old收集器、Parallel Old收集器和CMS收集器。对每种收集器的算法和特点进行了详细解析,希望对读者有参考价值。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
author-avatar
最爱7色的彩虹
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有