当前位置: 首页 > news >正文

线程与进程的关联

上篇博客 我们说了进程
下面我来用一个我们回忆一下

 

其实啊 进程在频繁的创建 / 销毁的时候 是非常低效
-因为创建的时候 要给进程分配资源(内存/文件) 赋值到CPU上 是一个大活

所以 有了线程

那咱们已经很了解进程了 直接说 线程 与 进程 的区别:

对比进程线程
1包含线程
2更轻量,创建更快,销毁的也更快
3进程与进程之间 则是独立的 内存/文件 资源同一个进程的多个线程之间 共用一份 内存/文件 资源
4资源分配的基本单位调度执行的基本单位

解释一下:


1.       进程包含线程-一个进程至少有一个线程 也可以有多个线程
2&3.  2的原因是因为3 共用一份资源 所以避免了上述 创建进程所带来的低效的原因

在展开说说:
多个线程是 '并发'执行的('并行'+'并发')
但是 操作系统在调度线程的时候 是不确定的--"抢占式执行"
比如下述代码 与 结果 你可以看到 产生的结果不具有什么规律性

class MyThread extends Thread{
    @Override
    public void run() {
        while(true){
            System.out.println("thread");
            try {
                sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

public class Text {

    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        myThread.start();
        while(true){
            System.out.println("main");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

 所以 线程也有很多的缺点:

1.不如上述的 "抢占式执行" 就给多线程的执行 带来的很多的不确定因素

2.计算量小的话,创建多线程 也许速度反而更慢了

...

相关文章:

  • Linux环境下fastdfs部署
  • 解锁新技能《Redis SETBIT用法》
  • STL应用 —— queue(队列)
  • 【计算机网络】OSI七层网络参考模型
  • 第二十章 控制进程(一)
  • 移动Web第四天 1 移动适配
  • JavaFx 实现按钮防抖和软件重启(Kotlin)
  • 2022年全国最新消防设施操作员(高级消防设施操作员)真题题库及答案
  • Rest学习环境搭建笔记
  • JavaScript-DOM节点的相关操作
  • 猿创征文|HCIE-Security Day49:AC准入控制SACG
  • 移动Web第二天 4 空间转换 5 动画
  • LeetCode646-最长数队链
  • 力扣:23,-合并K个升序链表
  • 移动Web第三天 1 移动端特点 2 百分比布局 3 Flex布局
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Mithril.js 入门介绍
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • 关于Java中分层中遇到的一些问题
  • 今年的LC3大会没了?
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 区块链分支循环
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 入门级的git使用指北
  • 算法之不定期更新(一)(2018-04-12)
  • 用Python写一份独特的元宵节祝福
  • 选择阿里云数据库HBase版十大理由
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (1)STL算法之遍历容器
  • (2)(2.10) LTM telemetry
  • (3)llvm ir转换过程
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (翻译)terry crowley: 写给程序员
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (四)Linux Shell编程——输入输出重定向
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)IOS中获取各种文件的目录路径的方法
  • . Flume面试题
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net 微服务 服务保护 自动重试 Polly
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET命名规范和开发约定
  • .NET文档生成工具ADB使用图文教程
  • @Autowired标签与 @Resource标签 的区别
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [AutoSar]BSW_Com07 CAN报文接收流程的函数调用
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法
  • [Codeforces] number theory (R1600) Part.11