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

还是网站好买一个app软件要多少钱

还是网站好,买一个app软件要多少钱,wordpress发文章后显示两篇,建了个网站百度上会有么一、线程与进程的区别1、进程是操作系统分配资源的基本单位,线程是操作系统调度的基本单位2、同一个进程下的多个线程,共享系统分配给进程的资源区别点进程线程概念操作系统分配资源的基本单位,每个进程拥有独立的地址空间进程的一个执行单元…

一、线程与进程的区别

        1、进程是操作系统分配资源的基本单位,线程是操作系统调度的基本单位

        2、同一个进程下的多个线程,共享系统分配给进程的资源

区别点进程线程
概念操作系统分配资源的基本单位,每个进程拥有独立的地址空间进程的一个执行单元,同一进程内的线程共享进程资源
资源拥有拥有独立的内存空间、文件句柄等系统资源不独立拥有资源,依赖所在进程共享内存和文件句柄
开销创建/销毁开销大,切换开销大(需要切换内存上下文)创建/销毁开销小,切换开销小(线程切换不涉及内存页切换)
调度由操作系统调度由操作系统调度,也可由用户级线程库调度
通信方式需要进程间通信(IPC):管道、Socket、共享内存、消息队列等线程间通信可直接访问共享内存,也可使用消息传递
可靠性一个进程崩溃不会直接影响其他进程一个线程崩溃可能导致整个进程崩溃
适用场景适合资源隔离、任务独立适合高并发、任务紧密协作

二、线程间通信方式

线程是共享同一进程资源的,所以线程间通信方式主要有两类:

1. 共享内存

原理

  • 线程可以直接读写进程内的共享数据(如全局变量、对象)。

  • 因为存在并发访问,必须使用 同步机制 避免数据冲突。

Java示例

class Counter {private int count = 0;// synchronized保证线程安全public synchronized void increment() {count++;}public synchronized int getCount() {return count;}
}public class ThreadSharedMemoryDemo {public static void main(String[] args) throws InterruptedException {Counter counter = new Counter();Runnable task = () -> {for(int i=0; i<1000; i++) {counter.increment();}};Thread t1 = new Thread(task);Thread t2 = new Thread(task);t1.start();t2.start();t1.join();t2.join();System.out.println(counter.getCount()); // 2000}
}

特点

  • 优点:通信效率高。

  • 缺点:需要同步机制,容易出现 死锁、竞态条件


2. 消息传递

原理

  • 线程通过 传递消息 来通信,而不是直接访问共享变量。

  • Java中常用的方式:

    • wait()/notify() 方法

    • BlockingQueue(推荐)

    • join() 方法(简单等待)

Java示例(BlockingQueue[是 Java 并发包 (java.util.concurrent) 提供的一个接口,是一个支持阻塞的队列])

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;public class ThreadMessagePassingDemo {public static void main(String[] args) {BlockingQueue<String> queue = new ArrayBlockingQueue<>(1);Thread producer = new Thread(() -> {try {queue.put("消息1");System.out.println("生产者放入消息");} catch (InterruptedException e) {e.printStackTrace();}});Thread consumer = new Thread(() -> {try {String msg = queue.take();System.out.println("消费者接收消息: " + msg);} catch (InterruptedException e) {e.printStackTrace();}});producer.start();consumer.start();}
}

wait/notify 示例

class Message {private String msg;private boolean empty = true;public synchronized void put(String message) throws InterruptedException {while(!empty) wait();this.msg = message;empty = false;notifyAll();}public synchronized String take() throws InterruptedException {while(empty) wait();empty = true;notifyAll();return msg;}
}

特点

  • 优点:线程间不会直接共享数据,更安全。

  • 缺点:效率略低,适合生产者-消费者模式。


三、总结

  1. 进程是资源分配单位,线程是执行单位。

  2. 线程间通信主要有两种:

    • 共享内存:效率高,但需同步,易出错。

    • 消息传递:安全性高,适合异步通信。

  3. Java中:

    • 共享内存:使用 synchronized, Lock 等。

    • 消息传递:使用 BlockingQueue, wait()/notify(), join() 等。

http://www.dtcms.com/a/507867.html

相关文章:

  • 无锡万度网站建设WordPress Demo演示
  • 智能外呼是什么意思
  • 【读论文】——基于光谱学的玉米种子品质检测及其成像技术综述
  • 如何自建网站满分作文网
  • 服务器/Pytorch——对于只调用一次的函数初始化,放在for训练外面和里面的差异
  • iOS 混淆与 IPA 加固一页式行动手册(多工具组合实战 源码成品运维闭环)
  • PySide6 使用搜索引擎搜索 多类实现 更新1次
  • 宁波网站优化的关键企业网站后台管理系统模板
  • 网站开发项目需求分析说明书电子商务网站开发与实现
  • 群晖实现证书90天自动更新(无需对外提供80端口)
  • AMCL自适应(KLD - Sampling: Adaptive Particle Filters)一种基于粒子滤波的移动机器人定位算法
  • NOR FLASH
  • 网站代码优化方案网站建设和编程的区别
  • 重庆建设工程造价管理协会网站直播网站开发价格
  • 【Nest】集成测试
  • ELK运维之路(Logstash基础使用-7.17.24)
  • 快速排序(JAVA详细讲解快速排序的四种方式)
  • 数据结构四大简单排序算法详解:直接插入排序、选择排序、基数排序和冒泡排序
  • 官渡网站建设wordpress单页面制作
  • 企业电子商务网站开发数据库设计昆明seo博客
  • 东道 网站建设erp系统哪家做得好
  • 现代 Web 开发中检测用户离开页面的完整方案(附 Vue 实现)
  • [crackme]029-figugegl.1
  • 网站建站分辨率腾讯企点怎么注册
  • 第四章:L2CAP 的“数据语言”——揭秘蓝牙通信的报文格式
  • 【代码随想录算法训练营——Day43(Day42周日休息)】动态规划——300.最长递增子序列、674.最长连续递增序列、718.最长重复子数组
  • block的样式有哪些?如果copy的话分别会有啥样式
  • 如何做网络投票网站大数据开发工程师
  • 提示词 prompt 快速上手
  • 网站降权查询工具lnmp中安装wordpress