`

多线程总结

 
阅读更多
多线程是指在同一应用程序下有多个顺序流同时执行
在java中定义一个新的线程类有两种方式:
1)实现runnable接口
2)继承Thread类并重写其run方法
Start方法和run方法的区别:
当要启动线程的时候,调用线程类的start方法即可以启动线程,告诉cpu该线程已经准备好,此时,线程并没有真正的运行,它必须等待cpu的调度,当cpu将时间片分给了该线程,会调度当前线程的run方法,线程才开始真正的执行。run方法由cpu调度,如果用户手动地调用线程类对象的run方法,则是普通的方法调用,不是启动线程。
线程有四种状态,任何一个线程肯定处于这四种状态中的一种:
产生(New):通过new产生了一个线程对象后没对它调用start()函数之前。
就绪:调用线程类对象的start方法后进入就绪状态,等待cpu的调度。
运行:cpu在空闲或者适当的是给线程分得时间片,调用线程的run方法,线程开始执行。当时间片执行完后又重新回到就绪状态,重新进入等待队列,等待cpu的调度。
阻塞:当线程正在运行的时候遇到情况被阻塞,在阻塞解决前处于阻塞状态。当阻塞解除后线程重新进入就绪或者终止状态。
终止:run方法执行完毕,线程也就运行完,进入终止状态。
线程同步:多线程通常会涉及线程同步的问题。
当多个线程同时访问一个公共的资源时,可能会导致数据的不安全。为了保证对共享数据操作的完整性,可以对公共的资源加锁。每个对象都有一个“互斥锁”的标记,这个标记保证在任一时刻,最多只能有一个线程访问该对象。当某个对象被synchronized关键字修饰时,表示该对象在任一时刻只能有一个线程访问。可以在代码块里加锁,也可以在方法声明中加锁。
线程控制的基本方法:
isAlive():判断线程是否是活着的:就绪、运行、阻塞状态时返回true。创建和终止返回false。
setPriority():设置线程的优先级。线程的优先级别用数字表示,范围从1到10,一个线程的缺省优先级别是5,数字越大,优先级别越高,获得cpu的执行时间片越多。
Thread.sleep():它是Thread类的静态方法,使当前线程(即调用该方法的线程)暂停执行指定的一段时间,让其他线程有机会继续执行,但如果该线程所执行的方法是锁定的,则它并不释放对象锁,其他线程仍然不同访问共享数据。
wait():它是java.lang.Object类的方法。wait()方法使当前线程暂停执行并释放对象锁标志,让其他线程可以进入Synchronized数据块,当前线程被放入对象等待池中。当调用 notify()方法后,将从对象的等待池中移走一个任意的线程并放到锁标志等待池中,只有锁标志等待池中的线程能够获取锁标志;如果锁标志等待池中没有线程,则notify()不起作用。notifyAll()则从对象等待池中移走所有等待那个对象的线程并放到锁标志等待池中。wait()和notify()、notifyAll():这三个方法用于协调多个线程对共享数据的存取,所以必须在Synchronized语句块内使用这三个方法。Synchronized这个关键字用于保护共享数据,阻止其他线程对共享数据的存取。如果需要在当前线程还没退出Synchronized数据块时让其他线程也有机会访问共享数据,此时就用这三个方法来灵活控制。
join():调用指定线程的join()方法,将当前线程与指定线程合并,当指定线程结束,再恢复当前线程的运行。
yield():让出cpu,当前线程进入就绪队列等待cpu的调度。
分享到:
评论

相关推荐

    C#.net同步异步SOCKET通讯和多线程总结2[参照].pdf

    C#.net 同步异步 SOCKET 通讯和多线程总结 本文旨在总结 C#.net 中的同步异步 SOCKET 通讯和多线程编程,涵盖服务端和客户端的实现细节。 一、服务端实现 服务端使用 System.Net 和 System.Net.Sockets 命名空间...

    windows多线程总结

    【Windows多线程总结】 Windows操作系统提供了一套完整的API来支持多线程编程,使得开发者可以在同一进程中同时执行多个线程,实现并发处理任务。本文将深入探讨Windows多线程编程的基本概念、线程同步、线程池以及...

    C#.net同步异步SOCKET通讯和多线程总结

    C#.net同步异步SOCKET通讯和多线程总结 C#.net同步异步SOCKET通讯和多线程总结是指在C#.net环境下实现的同步异步套接字通信和多线程编程的总结。套接字(Socket)是tcp/ip网络协议接口,内部定义了许多的函数和例程...

    java多线程总结(一)

    Java多线程是Java编程语言中的一个重要特性,它允许开发者创建并发执行的多个线程,从而提高程序的执行效率和响应速度。Java中实现多线程主要有两种方式:继承Thread类和实现Runnable接口。 ### 继承Thread类 在...

    C++多线程总结[归纳].pdf

    C++多线程总结 本文档对C++多线程编程进行了总结,介绍了三种创建线程的方法:CreateThread函数、AfxBeginThread函数和_beginthread()/_beginthreadex()函数,同时对线程的管理和终止进行了详细的讲解。 ...

    JAVA多线程总结

    【JAVA多线程总结】 Java 多线程是Java编程中的关键特性,它允许程序同时执行多个任务,提高系统的效率和响应性。本篇总结涵盖了Java多线程的基础概念、创建与启动、线程调度、同步与协作以及新特性。 **一、Java...

    Java编程中多线程总结

    ### Java编程中多线程总结 #### 一、Java多线程概述 Java多线程是Java编程语言中一个至关重要的部分,它允许程序在单个应用程序中并发地执行多个任务,极大地提高了程序的效率和响应性。在Java 5之前,多线程的...

    c#多线程总结文档.ppt

    c# 多线程总结

    MFC 多线程总结

    在Windows应用程序开发中,MFC(Microsoft Foundation Classes)框架提供了对多线程的支持,使得开发者可以构建更加复杂的并发系统。MFC中的线程分为两类:工作者线程和用户界面线程,它们各自有不同的特性和用途。 ...

    C#dotnet同步异步SOCKET通讯和多线程总结

    C#dotnet同步异步SOCKET通讯和多线程总结

    Java并发编程实践(java concurrency in practice)pdf (java多线程总结.ppt)

    配合`JAVA多线程总结.ppt`,你可以得到一个更直观和简洁的概览,快速回顾和掌握上述关键知识点。虽然中文版翻译可能存在不足,但原版英文书籍通常能更准确地传达作者的意图和细节,值得深入阅读。

    java多线程总结

    Java多线程是Java编程中的核心概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。本文将深入探讨Java多线程的相关知识点,包括线程的创建、线程的状态、同步机制以及线程安全问题。 1. **线程的创建*...

    C# 多线程总结

    本文将对C#多线程进行详细总结,包括如何创建线程、同步问题以及使用不同的同步机制。 1. 创建线程 1.1 异步委托方式 异步委托是通过.NET线程池创建线程的方法,这些线程默认为后台线程。使用BeginInvoke启动异步...

    Java多线程的总结

    Java多线程是Java编程中的一个核心概念,它在现代软件开发中扮演着至关重要的角色。多线程允许程序同时执行多个任务,提高了系统资源的利用率,提升了应用程序的响应速度和并发性能。对于大型分布式系统、Web应用...

    iOS 开发 之 多线程总结

    本文将对多线程进行深入总结,主要涵盖线程的基本概念、使用多线程的原因以及在iPhone平台上创建和管理线程的几种方法。 一、线程简介 线程是操作系统分配CPU时间的基本单位,它可以看作是程序执行流的最小单元。...

    iOS 多线程总结

    在iOS开发中,多线程是一项至关重要的技术,它能够帮助开发者实现应用的高效运行,提升用户体验。本文将深入探讨四种主要的iOS多线程机制:Pthreads、NSThread、GCD(Grand Central Dispatch)以及NSOperation和...

    JavaSE专题-多线程总结.doc

    JavaSE专题的多线程是Java编程中至关重要的一部分,它涉及到如何在单个程序中同时执行多个任务。以下是对多线程技术的详细说明: 1. **多线程技术介绍** - **进程**:一个进程是操作系统分配给应用程序的内存空间...

    C++多线程总结

    在C++编程中,多线程是实现并发执行任务的重要机制,它可以充分利用多核处理器的计算能力,提高程序的运行效率。本文将对C++中三种常见的线程创建方法进行总结,并讨论线程同步的相关知识。 1. 使用 `CreateThread`...

Global site tag (gtag.js) - Google Analytics