• Java核心技术 卷1 多线程----线程的相关概念(1)


    <1>什么是线程

      一个程序同时执行多个任务,每个任务称为一个线程(thread),它是线程控制的简称。可以同时运行一个以上线程的程序称为多线程程序(nultithreaded)。

    <2>多进程与多线程有哪些区别

      本质的区别在于每个进程拥有自己的一整套变量,而线程共享数据。共享变量使线程之间的通信比进程之间的通信更有效、更容易。

    Thread方法

    • void interrupt()

      向线程发送中断请求。线程的中断状态将被设置为true.如果目前该线程被一个sleep调用阻塞,那么,InterruptedException异常被抛出。

    • static bollean interrupted()

      测试当前线程(即正在执行这一命令的线程)是否被 中断。注意,这是一个静态方法。这一调用会产生副作用----它将当前线程的中断状态重置为false.

    • boolean inInterrupted()

      测试线程是否被终止。不像静态的中断方法,这一调用不改变线程的中断状态。

    • static Thread currentThread()  

      返回当前执行线程的Thread对象

      <3>线程的状态 (6种)

    • New(新创建)

       当用new操作符创建一个新线程时,如new Thread(r),该线程还没有开始运行。这意味着它的状态是new.

    • Runnable(可运行)

       一旦调用start方法,线程处于runnable状态。一个可运行的线程可能正在运行也可能没有运行,这取决于操作系统给线程提供运行的时间。(一个可运行的线程可能正在运行也可能没有运行)

    • Blocked(被阻塞)
    • Waiting(等待)

       当线程处于被阻塞或等待状态时,它暂时不活动。它不运行任何代码且消耗最少的资源。直到线程调试器重新激活它。

      (1)当一个线程试图获取一个内部的对象锁,而该锁被其它线程持有,则该线程进入阻塞状态。当所有其它线程释放该锁,并且线程调度器允许本线程持有它的时候,该线程将变成非阻塞状态。

      (2)当线程等待另一个线程通知调度器一个条件时,它自己进入等待状态。在调用Object.wait方法或Thread.join方法,或者是等待java.util.concurrent库中的Lock或Condition时,就会出现这种情况。

    • Timed waiting(计时等待)

      有几个方法有一个超时参数。调用它们导致线程进入计时等待(time waiting)状态。这一状态将一直保持到超时期满或者接收到适当的通知。带有超时参数的方法有Thread.sleep和Object.wait、Thread.join、Lock.tryLock以及Condition.await的计时版。

    • Terminated(被终止)

       线程因如下两个原因之一而被终止:

      (1)因为run方法正常退出而自然死亡。

      (2)因为一个没有捕获的异常终止了run方法而意外死亡。

    Java.lang.Thread

    • void join()

      等待终止指定的线程

    • void join(long millis)

      等待指定线程死亡或者经过指定的毫秒数。

    • Thread.State getState()

      得到这一线程的状态;New、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING或TERMINATED之一。

    • void stop()

      停止该线程。(过时) 

    • void suspend()

      暂停这一线程的执行(过时)

    • void resume()

      恢复线程。这一方法仅仅在调用suspend()之后调用。(过时)

  • 相关阅读:
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    Interesting Finds: 2010 02.08 ~ 02.13
  • 原文地址:https://www.cnblogs.com/gousheng107/p/7871835.html
Copyright © 2020-2023  润新知