`

多线程

阅读更多

1、Java 中如果我们自己没有产生线程,那么系统就会给我们产生一个线程 (主线程,main 方法就在主线程上运行),我们的程序都是由线程来执行的。
2、进程:执行中的程序(程序是静态的概念,进程是动态的概念)。
3、线程的实现有两种方式,第一种方式是继承Thread 类,然后重写run 方法;第二种是实现Runnable 接口,然后实现其run 方法。
4.、将我们希望线程执行的代码放到run 方法中,然后通过start 方法来启动线程,start方法首先为线程的执行准备好系统资源,然后再去调用 run 方法。当某个类继承了Thread 类之后,该类就叫做一个线程类。
5、一个进程至少要包含一个线程。
6、对于单核 CPU来说,某一时刻只能有一个线程在执行(微观串行),从宏观角度来看,多个线程在同时执行 (宏观并行)。
7、对于双核或双核以上的CPU 来说,可以真正做到微观并行。
8、
1) Thread 类也实现了Runnable 接口,因此实现了Runnable 接口中的run 方法;
2) 当生成一个线程对象时,如果没有为其设定名字,那么线程对象的名字将使用如下形式:Thread-number,该number 将是自动增加的,并被所有的Thread 对象所共享因为它是static 的成员变量)。
3) 当使用第一种方式来生成线程对象时,我们需要重写run 方法,因为Thread 类的run
方法此时什么事情也不做。

4) 当使用第二种方式来生成线程对象时,我们需要实现Runnable 接口的run 方法,然后使用new Thread(new MyThread()) (假如MyThread 已经实现了Runnable 接口)来生成线程对象,这时的线程对象的run 方法就会调用MyThread 类的run 方法,这样我们自己编写的run 方法就执行了。
9、 关于成员变量与局部变量:如果一个变量是成员变量,那么多个线程对同一个对象的成员变量进行操作时,他们对该成员变量是彼此影响的(也就是说一个线程对成员变量的改变会影响到另一个线程)。
10、如果一个变量是局部变量,那么每个线程都会有一个该局部变量的拷贝,一个线程对该局部变量的改变不会影响到其他的线程。
11、停止线程的方式:不能使用Thread 类的stop 方法来终止线程的执行。一般要设定一个变量,在 run 方法中是一个循环,循环每次检查该变量,如果满足条件则继续执行,否则跳出循环,线程结束。
12、 不能依靠线程的优先级来决定线程的执行顺序。
13、synchronized 关键字:当synchronized 关键字修饰一个方法的时候,该方法叫做同步方法。
14、Java 中的每个对象都有一个锁(lock)或者叫做监视器(monitor),当访问某个对象的synchronized 方法时,表示将该对象上锁,此时其他任何线程都无法再去访问该synchronized 方法了,直到之前的那个线程执行方法完毕后(或者是抛出了异常),那么将该对象的锁释放掉,其他线程才有可能再去访问该synchronized 方法。
15、 如果一个对象有多个 synchronized 方法,某一时刻某个线程已经进入到了某个synchronized 方法,那么在该方法没有执行完毕前,其他线程是无法访问该对象的任何synchronized 方法的。

分享到:
评论

相关推荐

    c++多线程

    一个进程中可以同时运行多个线程,每个线程可以执行不同的任务,这就是所谓的多线程。同一进程中的多个线程将共享该进程中的全部系统资源,如虚拟地址空间、文件描述符和信号处理等,但是同一个进程中的多个线程都有...

    stm32单片机多线程实例

    多线程是实现复杂任务并发执行的关键技术,能够提高资源利用率,优化系统响应时间。在STM32上实现多线程,通常会借助实时操作系统(RTOS)如RT-Thread。 RT-Thread是一个轻量级、开源的实时操作系统,它为STM32等微...

    多线程测试

    在计算机科学领域,多线程是一种程序设计技术,它允许应用程序同时执行多个任务或子任务。这极大地提高了软件的效率和响应性,特别是在现代多核处理器的环境下。本主题将深入探讨多线程的实现方式及其与单线程的对比...

    大漠多线程模板_大漠_大漠多线程_

    "大漠多线程模板"是一个专门针对C#开发的多线程处理框架,它为开发者提供了便捷的方式来管理和优化多线程应用。这个框架由知名开发者"大漠"创建,旨在简化复杂的并发编程,提高代码的可读性和可维护性。 多线程允许...

    安卓多线程

    安卓多线程,安卓高级开发中,必备技能,项目开发中都要使用

    qt QTcpServer多线程

    QTcpServer多线程 每个客户端连接的tcpSocket分别分配一个专门的线程来处理。 核心思想:继承并重写QTcpServer的incomingConnection函数去自己实现tcpsocket连接的建立和分配。 incomingConnection函数说明: 当...

    多线程介绍

    多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多...

    多线程基础与基于多线程的简单聊天室

    在IT行业中,多线程是程序设计中的一个重要概念,尤其在Java编程中,它被广泛应用于提高应用程序的并发性能和响应速度。本压缩包“多线程基础与基于多线程的简单聊天室”提供了对多线程技术的实践理解和二次开发的...

    多线程示例

    在IT领域,多线程是程序设计中的一个重要概念,尤其在现代计算机系统中,它能够提升应用程序的效率和响应性。MFC(Microsoft Foundation Classes)是微软提供的一个C++类库,用于简化Windows应用程序的开发,包括...

    qt websocket 客户端 多线程使用

    qt 使用QWebSocket 创建websocket客户端来读取数据,异步链接,并且放入到线程中去执行,线程池的基础,代码使用两个用户,放入到一个线程中执行,同理,可以多个用户放入到多个线程中执行,为线程池执行websocket ...

    java深入理解多线程

    Java多线程是并发编程中的一个重要概念,它允许程序在同一时刻执行多个任务。以下是对Java多线程的深入理解: 线程概述 基本概念:线程是操作系统能够进行运算调度的最小单位,一个进程可以包含多个线程。 特性:...

    WPF多线程实例

    在Windows Presentation Foundation(WPF)开发中,多线程是一个重要的技术,特别是在处理大量数据或进行耗时操作时,为了保持用户界面(UI)的响应性,通常会使用多线程来实现非UI任务。本实例是关于如何在WPF应用...

    多线程导入excel 数据

    在Java编程中,多线程导入Excel数据是一项常见的任务,特别是在大数据处理和高并发场景下。这个场景通常涉及到性能优化和资源管理,以确保系统稳定性和数据一致性。下面将详细阐述多线程导入Excel数据的核心知识点。...

    python多线程测试代码

    使用一个简单的数字递减案例,来模拟多线程下的工作逻辑

    易语言关闭多线程句柄方法

    易语言关闭多线程句柄方法 易语言是一种功能强大且灵活的编程语言,多线程编程是其重要特性之一。然而,在多线程编程中,如何正确地关闭线程句柄是非常重要的。今天,我们将分享易语言关闭多线程句柄方法的相关知识...

    Java多线程详解(超详细)_狂神说笔记完整版_项目代码_适合小白随课程学习

    Java多线程详解 在Java编程中,多线程是一种重要的技术,它使得程序能够同时执行多个任务,提高系统的效率和响应性。本教程将详细讲解Java中的多线程概念,包括线程的创建、状态、同步以及高级主题,旨在帮助初学者...

    Java多线程知识点总结

    Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。在Java中,线程的生命周期包含五个基本状态,分别是新建状态(New)、就绪...

    详解易语言启动多线程

    易语言多线程启动详解 易语言多线程启动是指在易语言中使用多线程相关的API、支持库或模块来实现多线程编程的技术。多线程编程可以极大地提高程序的执行效率和响应速度,特别是在需要执行大量计算或I/O操作的场景下...

    多线程多线程.xmind

    该文档是笔者在学习李刚老师《Java疯狂讲义》中有关多线程的用法而总结出来的笔记,其中主要的内容包括线程创建和启动、线程的生命周期、控制线程、线程同步、线程通信线程池等基本内容。对Java多线程有详细的介绍。

    C#多线程开发之并发编程经典实例.zip

    在C#编程中,多线程是一个至关重要的概念,尤其对于开发高性能、高并发的应用程序而言。本资源“C#多线程开发之并发编程经典实例”提供了丰富的实例,旨在帮助C#开发者深入理解并掌握多线程技术。以下是关于C#多线程...

Global site tag (gtag.js) - Google Analytics