Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >进程与线程的区别

进程与线程的区别

作者头像
ccf19881030
发布于 2019-04-23 06:56:54
发布于 2019-04-23 06:56:54
91330
代码可运行
举报
文章被收录于专栏:ccf19881030的博客ccf19881030的博客
运行总次数:0
代码可运行

一、操作系统中线程和进程的概念 现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。 线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。 “同时”执行是人的感觉,在线程之间实际上轮换执行。 二、Java中的线程 在Java中,“线程”指两件不同的事情: 1、java.lang.Thread类的一个实例; 2、线程的执行。 使用java.lang.Thread类或者java.lang.Runnable接口编写代码来定义、实例化和启动新线程。 一个Thread类实例只是一个对象,像Java中的任何其他对象一样,具有变量和方法,生死于堆上。 Java中,每个线程都有一个调用栈,即使不在程序中创建任何新的线程,线程也在后台运行着。 一个Java应用总是从main()方法开始运行,mian()方法运行在一个线程内,它被称为主线程。 一旦创建一个新的线程,就产生一个新的调用栈。 线程总体分两类:用户线程和守候线程。 当所有用户线程执行完毕的时候,JVM自动关闭。但是守候线程却不独立于JVM,守候线程一般是由操作系统或者用户自己创建的。 三、java何时会创建新的线程?     答:java中所有的线程都必须通过new Thread()或实现Runnable,显式的创建新线程。调用其他类的方法、访问字段等操作都是在同一个线程里进行的,不会创建新的线程。     可以分为两种情况:               1、由JVM自动创建的,如:垃圾收集线程--启动时创建               2、由用户创建的。 测试代码:

进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行. 进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。如果有兴趣深入的话,我建议你们看看《现代操作系统》或者《操作系统的设计与实现》。对就个问题说得比较清楚。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/andy6355/archive/2008/06/03/2506171.aspx

public class TClassMain{   

public static void main(String[] args){   

          String threadName = Thread.currentThread().getName();   

          System.out.println("TClassMain类所属线程:"+threadName);   

            TClass1 t1 = new TClass1();   

//t1.display();

            t1.start();   

  }   

}   

class TClass1 extends Thread{   

/*public void display(){

                String threadName = Thread.currentThread().getName();

            System.out.println("TClass1类所属线程:"+threadName);

    }   */

public void run(){   

            String threadName = Thread.currentThread().getName();   

          System.out.println("TClass1类所属线程:"+threadName);   

    }   

}  

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class TClassMain{
	public static void main(String[] args){
		  String threadName = Thread.currentThread().getName();
		  System.out.println("TClassMain类所属线程:"+threadName);
			TClass1 t1 = new TClass1();
			//t1.display();
			t1.start();
	}
}

class TClass1 extends Thread{
	/*public void display(){
				String threadName = Thread.currentThread().getName();
		  	System.out.println("TClass1类所属线程:"+threadName);
	}	*/
	public void run(){
			String threadName = Thread.currentThread().getName();
		  System.out.println("TClass1类所属线程:"+threadName);
	}
}
  1. D:/test>java TClassMain   
  2. TClassMain类所属线程:main   
  3. TClass1类所属线程:Thread-0
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2010年09月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
3 条评论
热度
最新
冷启动app后如何优化才是比较耗费心神的
冷启动app后如何优化才是比较耗费心神的
回复回复点赞举报
谢谢分享
谢谢分享
回复回复点赞举报
沙发沙发
沙发沙发
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
5分钟教你打造一个秒开的 Android App
背景 近日在开发过程中,发现每次点击app从桌面启动都有一个在桌面明显的等待时间,机型越低端的越明显,冷启动优化看来已经势在必行,所以怒而一顿研究再解决之。话不多说先上优化前后效果图: 买家秀(gif): 淘宝秀(gif): Android App启动流程: 俗话说要想优化好,流程不可少!关于android app启动的流程图如下: 总结一下一个完成的冷启动app过程应该是经过: Zygote Fork Proccess -> Application:attachBaseContext() -> Ap
腾讯Bugly
2023/04/02
7820
5分钟教你打造一个秒开的 Android App
优化App冷启动,实现启动页错觉秒开
APP启动时,界面会首先展示一个白屏或者黑屏,然后再进入欢迎页,稍作停留最后进入APP主页。进程的创建是需要时间的,在创建完成之前,界面是呈现假死状态的,这可能会让用户会以为没有点到APP而再次点击,极大的降低了用户体验,Android需要及时做出反馈去避免这段时间的尴尬。于是系统会根据你的manifest文件设置的主题颜色的不同来展示一个白屏或者黑屏。这个黑(白)屏就称为Preview Window,即预览窗口。
木溪bo
2018/12/27
2.1K0
你的 APP 为何启动那么慢?
可见冷启动的必要条件是该APP进程不存在,这就意味着系统需要创建进程,APP需要初始化。在这三种启动方式中,冷启动耗时最长,对于冷启动的优化也是最具挑战的。因此本文重点谈论的是对冷启动相关的优化。
刘盼
2019/05/08
2K0
你的 APP 为何启动那么慢?
冷启动与热启动,AsyncTask,HandlerThread,IntentService,Service 保活,IntentService
app冷启动: 当应用启动时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用, 这个启动方式就叫做冷启动(后台不存在该应用进程)。冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。
zhangjiqun
2024/12/16
1610
Android性能优化系列之App启动优化
应用的启动速度缓慢是我们在开发过程中经常会遇到的问题,比如启动缓慢导致的黑屏,白屏问题,本篇博客就将介绍App启动优化的相关知识。
老马的编程之旅
2022/06/22
7610
Android性能优化系列之App启动优化
性能优化(一)APP 启动优化(不敢说秒开,但是最终优化完真不到 1s)
这里也许会有人问 APP 启动还需要优化吗?启动又不是我们自己写的代码,难道 Google 工程师会犯这么低级的错吗?其实这还真不是 Google 的错,应该说是给我们开发者留了一个坑吧。应该有的同学知道是怎么一回事儿了,当我们在系统桌面任意点击一个 APP 是不是会发现启动的时候有一瞬间有白屏出现(以前老版本是黑屏) 那么我们怎么来优化这个黑白屏的问题勒,现在我们先来了解一下 Android 手机重开机到启动 APP 的过程吧。
Android技术干货分享
2019/05/10
9180
性能优化(一)APP 启动优化(不敢说秒开,但是最终优化完真不到 1s)
2019 Android 高级面试题总结 从java语言到AIDL使用与原理
a.建造者模式: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 使用场景比如最常见的AlertDialog,拿我们开发过程中举例,比如Camera开发过程中,可能需要设置一个初始化的相机配置,设置摄像头方向,闪光灯开闭,成像质量等等,这种场景下就可以使用建造者模式
Android技术干货分享
2019/03/27
9140
Android 启动优化说明、黑白屏处理
Android 启动优化说明、黑白屏处理 前言 正文 一、启动来历 二、启动说明 1. 冷启动 2. 热启动 3. 温启动 4. 冷启动流程 5. 优化时间 6. 优化方案 三、黑白屏处理 1. 创
晨曦_LLW
2022/03/11
1.2K0
Android 启动优化说明、黑白屏处理
Android 性能分析学习(启动速度优化)
启动速度是用户体验app的第一感官,所以如果APP卡顿的话,给用户的体验会非常的糟糕。 本文主要针对这点进行的分析学习以及记录。
艳龙
2021/12/16
9540
Android 性能分析学习(启动速度优化)
一触即发——App启动优化最佳实践
一触即发 App启动优化最佳实践 本篇是我的原创,我又回来啦~ 文中的很多图都是Google性能优化指南第六季中的一些截图 Google给出的优化指南来镇楼 https://developer.an
用户1907613
2018/07/20
1.4K0
❤️Android 性能优化之启动优化❤️
用户希望应用能够快速打开。启动时间过长的应用不能满足这个期望,并且可能会令用户失望。轻则鄙视你,重则直接卸载你的应用。
Android 帅次
2021/11/12
1K0
❤️Android 性能优化之启动优化❤️
Android-App性能优化
上一篇我们讲了java的引用机制,今天我们来一下和它有关的app性能优化(其实也不是很大)。
android_薛之涛
2018/09/12
2.3K0
Android-App性能优化
你必须要掌握的Android冷启动优化
事件发生在发包上线的前两天,在某某云进行移动测试时,提示冷启动速度低于平均值的问题,之前自己也曾尝试过优化,但是发现效果并不是很明显,作为一个有追求的开发者,趁着有点空闲时间,要好好研究一下冷启动优化问题。
用户1269200
2018/12/07
1.8K0
Android性能优化(一)—— 启动优化,冷启动,热启动,温启动
App启动方式分三种:冷启动(cold start)、热启动(hot start)、温启动(warm start)
233333
2024/06/28
4990
Android性能优化(一)—— 启动优化,冷启动,热启动,温启动
Android性能优化笔记(一)——启动优化
从上面的总结可以看出,在应用的启动过程中,冷启动是最慢最耗时的,系统以及应用本身都有大量的工作需要处理,所以,冷启动对于应用的启动速度是最具挑战以及最有必要进行优化的。
分你一些日落
2021/12/13
1.1K0
App冷启动,你还要我怎样?
首先我们得知道为什么会出现这个白屏的,在AndroidManifest.xml配置文件里面,你会看到你的LAUNCHER activity的配置
Android技术干货分享
2020/04/23
1.8K1
App冷启动,你还要我怎样?
App冷启动与启动白屏处理
近日在开发过程中,发现每次点击app从桌面启动都有一个在桌面明显的等待时间,机型越低端的越明显,冷启动优化看来已经势在必行,所以怒而一顿研究再解决之。 1冷启动 第一次启动、被用户杀死进程或系统自动回收进程后,整个app后台任务被清理,再次启动app,称为 冷启动。 特点:后台任务全部结束,回收进程 2热启动 用户点击返回键退回界面,后台任务没有杀死,再次点击启动app,称为 热启动。 特点:未清理后台任务,再次启动 3为什么出现白屏 在一个Activity打开时,如果该Activity所属的Applica
蜻蜓队长
2018/08/03
1.5K0
App冷启动与启动白屏处理
启动优化
启动优化、布局优化、内存优化、卡顿优化、网络优化、数据库优化、内存泄漏优化、包体积优化等等。
码上积木
2020/12/25
9880
Android App优化之提升你的App启动速度之实例挑战
以之前写的Github App:https://github.com/mingjunli/GithubApp为例.
用户2802329
2018/08/07
6190
Android App优化之提升你的App启动速度之实例挑战
Android面试题之App的启动流程和启动速度优化
①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;
AntDream
2024/06/24
1890
Android面试题之App的启动流程和启动速度优化
相关推荐
5分钟教你打造一个秒开的 Android App
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验