Java教程

网络编程基础知识之单线程与多线程

本文主要是介绍网络编程基础知识之单线程与多线程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

网络编程基础知识之单线程与多线程

程序、进程、线程

  程序通俗地说就是由源代码生成的可执行应用。

  进程就是当一个程序开始运行时,它就是一个进程。进程包括运行中的程序和程序所使用到的内存和系统资源。即进程包括该程序以及运行该程序所需要的内存和资源(如CPU)。一个进程是由一或多个线程组成,进程只负责资源(如CPU)的调度和分配,线程才是真正执的执行单元,使用进程给予的资源进行处理操作。

  线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的。即不同的线程可以执行同一份代码段。线程在整个程序运行的过程中是独立运行的,且线程和线程之间是透明的,即线程本身是不知道有其它线程存在的。

单线程

  每个正在运行的程序(即进程),至少包括一个线程, 这个线程叫做主线程。

  主线程在程序启动时被创建,用于执行main函数。

  只有一个主线程的程序,称之为单线程程序。

  主线程负责执行程序的所有代码,这些代码只能顺序执行,不能并发执行。

多线程

  多线程是指程序中包含多个执行流,即在一个程序中可以运行多个不同的线程来执行不同的任务,也就是说单个程序可以创建多个并行执行的线程来完成各自的任务。主线称之外的均为子线程,子线程和主线程都是独立的运行单元,各自的执行互不影响。

多线程的优点

  可以提高CPU的利用率。在多线程编程中,一个线程必须等待时,CPU可以运行其它的线程而不是处理等待过程中,这样可以极大提高程序的执行效率。

多线程的缺点

  线程也是程序的一部分,即线程也需要占用内存,线程越多占用的内存越多,非常依赖硬件的优劣。

  多线程需要协调和管理,即需要CPU时间跟踪线程。

  线程之间对共享资源的写操作会相互影响。

  线程过多会导致控制以及逻辑都太过复杂,最终出现很多Bug。

学习参考文章

点击跳转

这篇关于网络编程基础知识之单线程与多线程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!