进程:是一个程序在其自身地址空间的一次执行活动,进程是资源申请、调度和独立运行的单位,因此他使用系统中的运行资源;而程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此它不占用系统的运行资源。
线程:是程序中的一个单一的连续控制流程,一个线程可以拥有多个线程 。记得刚学习Java的时候,对线程中的run()不知道是什么意思,现在大胆认为它就像Java的main()一样,可以理解为一个线程启动运行的入口函数。
创建一个线程的方式有两种,一种是继承Thread类,还有就是实现Runnable 接口,两者都要重写run()方法。如下:
class MyThread extends Thread {
public void run(){}
}或者
class MyThread implements Runnable{
public void run(){};
}
2个线程,一个专门发,一个专门收,
发的好办,发了就不管了,
收的区分是响应还是请求,响应的话起线程解析处理;请求的话,再起线程进行处理,发响应包
重发机制,又要计时器,多少秒没收到响应包则重发
心跳机制,做一个计时器,收发都为空闲状态时,60秒触发心跳包,再来计时,若干秒没收到响应包则重连socket
重连,锁定socket,重新连接后再继续
一般都是accept后启动一个线程去处理,该线程中的处理大致如下
短连接:
run(){
read //读取请求包
process //处理
write //应答处理结果
}
长连接:
run(){
while(NotEnd){
read
process
write
}
}
最近使用java nio开发一个客户端-服务器程序,由于客户端有可能会非正常断开(如异常关机、网线被拔等故障),所以需要在服务端加入对客户端的心跳检测机制,以定时检查客户端的连接状态。我想到的有两个不同的方案:
1、在原socket收发线程中加入心跳检测,即发送心跳包,接收心跳应答。但这样似乎会使比较简洁的收发线程变得较为臃肿和复杂,如要定时发送心跳检测,还要分辨心跳包和正常的数据包等;
2、另一个方案是用一个单独的线程专门进行心跳检测,但问题是如果使用相同的socket句柄,多线程同时读写socket端口,会产生该socket输入输出缓冲区的线程共享冲突问题
分享到:
相关推荐
本篇将详细探讨Python中的线程与进程,以及它们与生成器和装饰器的关系。 首先,我们要了解线程与进程的基本概念。进程是操作系统分配资源的基本单位,每个进程都有独立的内存空间。线程则是进程内部的执行单元,...
但是进程与线程的重要区别在于线程不能够单独执行,它必须运行在处于活动状态的应用程序进程中。 在 Java 语言中,线程支持与语言运行环境结合在一起,提供了多任务并发执行,多线程的意义在于一个应用程序的多个...
操作系统实验报告——线程与进程同步,主要探讨了在Linux环境下如何实现进程和线程的同步,以解决经典的生产者-消费者问题。该实验旨在帮助学生掌握操作系统提供的同步机制,并深化对经典同步问题的理解。 实验内容...
1. **进程与线程的概念**: - **进程**:是操作系统资源分配的基本单位,拥有独立的内存空间和系统资源,可以并发执行。 - **线程**:是程序执行的最小单元,共享同一进程的资源,有自己的程序计数器、栈和局部...
三、进程与线程的区别 1. 资源分配:进程拥有独立的资源,而线程共享进程的资源。 2. 创建和销毁:创建和销毁进程的开销较大,而线程的创建和销毁相对快速。 3. 内存模型:进程间内存独立,线程间共享内存。 4. 并发...
进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程...
在计算机科学领域,进程与线程是两个核心概念,对于理解操作系统的工作原理至关重要。本文将深入探讨这两个概念,并通过直观的图解来帮助读者更好地理解它们之间的区别与联系。 #### 二、基本概念 1. **进程**:...
线程与进程是操作系统中两种基本的执行单元,它们各自有着独特的特性和作用。理解这两者的区别对于理解和优化软件性能至关重要。 首先,进程是操作系统分配资源的基本单位,它代表了一个程序在内存中的完整实例。在...
线程与进程是操作系统中并发执行的基本单位,理解它们的概念和特性对于编写高效的多任务程序至关重要。线程,可以理解为程序中独立的控制流,它不拥有独立的资源,而是共享同一进程的资源,包括内存空间、打开的文件...
总之,理解和掌握Android中的线程与进程是开发高质量应用的基础,它们直接影响到应用的响应速度、稳定性以及资源利用率。`WorkThreadDemo`这样的实例代码可以帮助开发者更好地理解并实践这些概念。
- **`vfork()`**:与`fork()`类似,但是`vfork()`创建的子进程与父进程共享数据段,这使得在子进程中修改任何共享数据都可能会影响父进程。此外,`vfork()`保证子进程先运行,直到它调用`exec()`或`exit()`后父进程...
这是关于并列与分布式的技术文档的一部分,Processes or Threads 线程与进程,本开发文档适合对于并列与分布式感兴趣的有一定计算机基础初学的朋友,一个快捷的学习文档或者温故知新,这是第一部分不要忘了第二部分...
Java面向对象程序设计中的并发处理,特别是在农业信息系统开发中,是一个关键的概念,因为高效的数据处理和多...在实际开发中,合理的设计和管理进程与线程,结合适当的同步机制,可以显著提升系统的性能和用户体验。
线程与进程的理论知识入门1线程与进程的理论知识入门1线程与进程的理论知识入门1线程与进程的理论知识入门1
线程与进程的理论知识入门2线程与进程的理论知识入门2
线程与进程的比较.pptx
这是关于并列与分布式的技术文档的一部分,Processes or Threads 线程与进程,本开发文档适合对于并列与分布式感兴趣的有一定计算机基础初学的朋友,一个快捷的学习文档或者温故知新。可以尝试一下如何利用这个技术