线程总结
线程:在一门编程语言中,占据着极其重要的地位。在很多地方都用的着线程,最经典的就是你在创建网站的时候,在网络上放一个服务端,每当有一个用户访问该网站时,就开辟一个线程来处理每一个客户端的请求。那么:
什么是线程?
线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。
什么是多线程?
多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。
多线程的好处:
可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。
线程的创建:
常用的有三种方法 1,继承Thread类。public class MyThread extends Thread {
public void run(){
//具体操作的代码
}
}
2,实现Runnable接口。 public class implements Runnable{
public void run(){
}
}
3,匿名内部类。第一种: new Thread(){
public void run(){
//你想做的事情
};
}.start();
第二种:
new Thread(new Runnable() {
public void run() {
//你想做的事情
};
}) {
}.start();
线程的方法:
sleep()/wait(),线程休眠,但可以直接由Thread调用,而wait()则不行,两者的区别在于后者在调用时得获取线程的对象锁。notif()/notifyall():唤醒等待的线程,与sleep()成对使用。 start():启动线程。 run():线程具体要实现的事。 interrput():中断线程,让线程处于等待状态。 stop():停止线程,但该方法已经过时,不介意使用。
线程锁的概念:
锁,即锁住自己的东西不让别人使用。当某个对象获取该锁对象时,其它的线程无法运行,只能等待。举个例子,现在只有一个卫生间,每一次只能有一个人上卫生间,而现在有一群人在排队上厕所。所以只能当某个人上完厕所,打开卫生间的锁时,其它的人才能进去。此时,卫生间的门相当于一个锁,而每个等待的人即为一个线程。
线程的状态:
有基本的三种状态,即就绪,等待,执行。
线程的同步:1,同步块:synochored(){//代码}
2,同步对象:synochored(obj),obj即为同步对象。
线程的生命周期:
创建:以上三种方式任一即可。
启动:start()方法被调用即启动线程。
运行:执行完start()方法后,由JVM自动调用run()方法,当有多个线程时,线程的调用顺序由JVM决定。
结束:执行完run()方法,或者人为调用以上所介绍的结束方法。
线程池:
当程序中有多个线程时,特别是当一个网站被成千上万的客户访问时,明显的如果单个处理每个用户的线程,系统将崩溃。此时线程池将派上用场。线程池:将每个线程存放在一个容器中,当某个线程结束后,自动调用线程池中的某个线程。这样将大大的节省CPU及提高程序的效率。
分享到:
相关推荐
C#.net 同步异步 SOCKET 通讯和多线程总结 本文旨在总结 C#.net 中的同步异步 SOCKET 通讯和多线程编程,涵盖服务端和客户端的实现细节。 一、服务端实现 服务端使用 System.Net 和 System.Net.Sockets 命名空间...
【Windows多线程总结】 Windows操作系统提供了一套完整的API来支持多线程编程,使得开发者可以在同一进程中同时执行多个线程,实现并发处理任务。本文将深入探讨Windows多线程编程的基本概念、线程同步、线程池以及...
【JAVA多线程总结】 Java 多线程是Java编程中的关键特性,它允许程序同时执行多个任务,提高系统的效率和响应性。本篇总结涵盖了Java多线程的基础概念、创建与启动、线程调度、同步与协作以及新特性。 **一、Java...
C#.net同步异步SOCKET通讯和多线程总结 C#.net同步异步SOCKET通讯和多线程总结是指在C#.net环境下实现的同步异步套接字通信和多线程编程的总结。套接字(Socket)是tcp/ip网络协议接口,内部定义了许多的函数和例程...
### 总结 Java多线程提供了强大的并发处理能力,开发者可以通过继承`Thread`类或实现`Runnable`接口来创建和管理线程。正确使用`start()`方法而非`run()`方法是确保线程正确启动的关键。理解Java多线程的工作原理和...
### Java线程总结教程知识点详解 #### 一、操作系统与多线程概念 - **多任务与分时操作系统**:现代操作系统(如Windows、Linux)能够实现多任务处理,即在用户看来似乎多个应用程序在“同时”运行。实际上,这是...
C++多线程总结 本文档对C++多线程编程进行了总结,介绍了三种创建线程的方法:CreateThread函数、AfxBeginThread函数和_beginthread()/_beginthreadex()函数,同时对线程的管理和终止进行了详细的讲解。 ...
### Java编程中多线程总结 #### 一、Java多线程概述 Java多线程是Java编程语言中一个至关重要的部分,它允许程序在单个应用程序中并发地执行多个任务,极大地提高了程序的效率和响应性。在Java 5之前,多线程的...
总的来说,Java线程总结的知识点涵盖了线程的基本概念、创建与管理、生命周期、同步机制、线程间通信以及线程的活跃性问题。理解和掌握这些知识点对于开发高效、稳定、并发的Java应用程序至关重要。
### 线程总结笔记——基于Linux环境下的线程控制与同步 #### 一、引言 本篇“线程总结笔记”主要针对Linux环境下多线程编程中的关键概念进行了整理与归纳,尤其是针对线程同步的问题进行了深入探讨。通过一个具体...
c# 多线程总结
在Windows应用程序开发中,MFC(Microsoft Foundation Classes)框架提供了对多线程的支持,使得开发者可以构建更加复杂的并发系统。MFC中的线程分为两类:工作者线程和用户界面线程,它们各自有不同的特性和用途。 ...
java实现多线程总结.doc
配合`JAVA多线程总结.ppt`,你可以得到一个更直观和简洁的概览,快速回顾和掌握上述关键知识点。虽然中文版翻译可能存在不足,但原版英文书籍通常能更准确地传达作者的意图和细节,值得深入阅读。
..Python113多线程总结.docx
..Python113多线程总结.pdf
C#dotnet同步异步SOCKET通讯和多线程总结
本文将深入探讨Java多线程的相关知识点,包括线程的创建、线程的状态、同步机制以及线程安全问题。 1. **线程的创建** Java提供了两种创建线程的方式: - **继承Thread类**:自定义类继承Thread类,并重写run()...
Java线程是并发编程的核心部分,它允许程序在同一时间执行多个任务,极大地提高了程序的效率和响应速度。在Java中,实现多线程有两种主要方式:继承`Thread`类和实现`Runnable`接口。 1. 继承`Thread`类: 当创建...