1.概念:
对象技术使你可以把程序划分成若干独立的部分,但还需要你把程序转换成彼此分离的,能单独运行的的子任务,每个独立的任务被成为一个“线程”。
进程: 一个独立运行着的程序,它有自己的地址空间。"多任务"操作系统通过周期性的将处理器切换到不同的任务。使其能够同时运行不止一个进程(程序)。每个进程都是连续的、一气呵成的。
线程:进程内部的单一控制流,一个进程可以具有多个并发执行流程。
多线程用途:通常用法是,你程序中某个部分与一个特定的事件或资源联系在了一起,而你不想让这种联系阻碍其余部分程序的运行,可以创建这个事件或资源相关的线程,让此线程独立与主线程运行。
2.动机:
比如你的程序有个方法执行时间特别长,然后后面的程序会等待这个方法执行完毕后,才有机会执行。这时候就需要多线程了。新起一个线程执行这个方法,执行这个方法的同时又把控制权交给程序其余的部分。就像处理器同时出现在2个地方。
1.并发还可以优化程序吞吐量。比如等待数据到达输入、输出端口的时候,你可以进行其他操作。如果不用线程,你要一直在监测输入、 输出端口,这样既笨拙又困难。
2.如果有一台多处理器机器,多线程就可以分布在不同的处理器上。极大提高吞吐量,这种情况多出现在多核web服务器上,对每个用户请求分配一个线程,把大量请求分配给不同的处理器来处理。
3.牢记:多线程的程序必须能在单处理器机器上运行,不使用任何线程写出同样功能的程序也是可以的,使用多线程使程序组织更有条理,大大简化程序设计。对于网络游戏没有并发支持将很难解决。
4.使用多线程,CPU将轮流给每个线程分配占用时间,多CPU例外,好处是代码不知道他是在单核还是多核CPU上,如果你程序运行的太慢添加一个CPU就很容易加快程序的运行速度,多任务和多线程往往是使用多处理器系统的合理方式。
5.单核CPU上,线程会降低运行效率,但从程序设计,资源平衡,用户使用方便看还是值得的,线程让你得到更加松散耦合的设计,否则你将不得不在部分代码中关注有线程处理的工作。
垃圾回收器只有在线程离开了run方法并死亡后才能把他清理掉,如果在main方法中你创建了一些线程对象,但是没有获取他的引用,对于普通对象会成为垃圾回收器回收目标,但是thread对象就不同了。因为每个thread对象要注册自己,所以实际上在某个地方存在着他的引用。
分享到:
相关推荐
这篇学习笔记将深入探讨Java多线程的核心概念、实现方式以及相关工具的使用。 一、多线程基础 1. 线程与进程:在操作系统中,进程是资源分配的基本单位,而线程是程序执行的基本单位。每个进程至少有一个主线程,...
以下是对马士兵多线程笔记的详细解析。 1. **多线程基础**:多线程是指一个应用程序中同时执行多个线程(即任务)的能力。这种并发执行可以提高系统资源的利用率,提升程序的响应速度和执行效率,特别是在多核...
通过马士兵的多线程训练营笔记,开发者不仅可以学习到多线程的基本概念,还能掌握高级并发编程技巧,这对于开发高并发、高性能的应用至关重要。在阅读和学习这些笔记时,结合实际的编程练习将有助于更好地理解和巩固...
本教程将详细讲解Java中的多线程概念,包括线程的创建、状态、同步以及高级主题,旨在帮助初学者逐步掌握这一关键技能。 1. **线程简介** - 线程是操作系统分配CPU时间的基本单位,一个进程可以有多个线程,它们...
在多线程环境下,多个线程可以并行地在单个进程中执行,使得程序能够同时处理多项任务。 Java中的线程是通过`Thread`类或实现`Runnable`接口来创建的。你可以直接继承`Thread`类并重写`run()`方法,或者创建一个...
#### 一、Java多线程概念 - **多线程定义**:多线程是指程序中可以同时执行多个线程的能力。Java虚拟机支持多线程机制,允许应用程序在不同的线程上并行执行任务。 - **线程特点**: - 每个线程都有自己的优先级。...
### 张孝祥Java多线程与并发库高级应用笔记概览 #### 一、Java多线程技术的重要性与挑战 Java线程技术是软件工程领域不可或缺的一部分,尤其在底层编程、Android应用开发以及游戏开发中,其重要性不言而喻。然而,...
本笔记将深入探讨C#中的多线程编程,包括其基本概念、创建线程的方式、线程同步与互斥、线程安全以及线程池的使用。 ### 1. 基本概念 - **线程**:线程是程序的执行流程,每个进程至少包含一个线程。多线程意味着...
这份"C++多线程学习笔记1"涵盖了基础到进阶的多线程概念,旨在帮助初学者快速掌握这一关键技能。 首先,C++11引入了对多线程的支持,引入了`<thread>`库,使得创建和管理线程变得简单。创建一个新的线程可以使用`...
【UNIX多线程学习笔记】 在UNIX操作系统中,多线程是一种重要的编程模型,它允许多个执行流在单个进程中并发运行。多线程带来了许多优势,包括提高应用程序响应速度,充分利用多CPU系统的资源,以及优化程序结构,...
一、多线程概念 多线程编程是一种编程模型,通过在单一进程中创建多个线程来实现并发执行任务。每个线程都有自己的程序计数器、栈和局部变量,但共享同一地址空间,这意味着线程间可以快速地通信和共享数据,但也...
### Java多线程学习笔记 #### 一、线程的基本概念 在计算机科学中,**线程**(Thread)是程序执行流的最小单位。一个标准的程序只能做一件事情,而通过多线程技术,可以让程序同时处理多个任务。在Java中,线程是...
Python3的多线程编程是软件开发中一个重要的概念,特别是在需要并发处理任务或高效利用多核处理器资源的场景下。本篇学习笔记主要涵盖了线程基础、threading模块的使用以及线程同步控制。 首先,线程是操作系统分配...
Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了程序的运行效率和资源利用率。本笔记全面涵盖了多线程的学习,包括基础理论和实践代码,旨在帮助开发者深入理解并掌握Java多线程技术。 一、...
Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,从而提高系统的效率和响应性。多线程在操作系统层面是通过进程和线程实现的,而Java则提供了一套丰富的API来支持多线程编程。 在操作系统...
在C#编程中,多线程是一个至关重要的概念,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应性。对于初学者来说,理解并掌握多线程是提升编程技能的关键步骤。以下是对"C#多线程笔记"中可能包含的知识点...
### Python3多线程知识点详解...通过以上介绍可以看出,在Python3中,多线程编程涉及到了线程状态管理、线程间的同步控制以及线程间的通信等核心概念和技术细节。这些知识点对于开发高效稳定的多线程应用程序至关重要。
线程之间的资源共享是多线程编程中的一个重要概念。在Java中,线程之间可以通过共享成员变量进行通信。 ```java class SharedData { int value; } class DataSharingThread extends Thread { private SharedData...