`
uule
  • 浏览: 6352059 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

【多线程总结】

 
阅读更多

线程需要注意的地方:

1、

public final synchronized void join(long millis)    throws InterruptedException {  
        long base = System.currentTimeMillis();  
        long now = 0;  
  
        if (millis < 0) {  
            throw new IllegalArgumentException("timeout value is negative");  
        }  
          
        if (millis == 0) {  
            while (isAlive()) {  
                wait(0);  
            }  
        } else {  
            while (isAlive()) {  
                long delay = millis - now;  
                if (delay <= 0) {  
                    break;  
                }  
                wait(delay);  
                now = System.currentTimeMillis() - base;  
            }  
        }  
    }  

 

从代码上看,如果线程被生成了,但还未被起动,调用它的 join() 方法是没有作用的,将直接继续向下执行Join方法实现是通过wait(小提示:Object 提供的方法)。 当main线程调用t.join时候,main线程会获得线程对象t的锁(wait 意味着拿到该对象的锁),调用该对象的wait(等待时间),直到该对象唤醒main线程 ,比如退出后。这就意味着main 线程调用t.join时,必须能够拿到线程t对象的锁

 

2、对某一线程调用 interrupt()时,如果该线程正在执行普通的代码,那么该线程根本就不会抛出InterruptedException。但是,一旦该线程进入到 wait()/sleep()/join()后,就会立刻抛出InterruptedException 。 

 

wait()和sleep()都可以通过interrupt()方法 打断线程的暂停状态 ,从而使线程立刻抛出InterruptedException。 

如果线程A希望立即结束线程B,则可以对线程B对应的Thread实例调用interrupt方法。如果此刻线程B正在wait/sleep /join,则线程B会立刻抛出InterruptedException,在catch() {} 中直接return即可安全地结束线程。 

 

分享到:
评论

相关推荐

    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