Java多线程(第七章)

原创 2016年05月31日 23:29:05

1. 线程的状态

  • interrupted静态方法:测试当前线程(current thread)是否是中断状态,执行后将状态标识清除,置为false。
  • isInterrupted实例方法: 测试线程Thread对象(this thread)是否是中断状态,不会清除标识状态。
1. BLOCKED          阻塞
Thread state for a thread blocked waiting for a monitor lock. 
2. NEW              新建
Thread state for a thread which has not yet started. 
3. RUNNABLE         运行或就绪
Thread state for a runnable thread. 
4. TERMINATED       终止
Thread state for a terminated thread. 
5. TIMED_WAITING    有限等待
Thread state for a waiting thread with a specified waiting time. 
6. WAITING          无限等待
Thread state for a waiting thread. 

这里写图片描述

public class TestThread {

    public static void main(String[] args) throws InterruptedException {
        MyThread thread1 = new MyThread();
        thread1.setName("thread1");
        System.out.println("thread1状态为:" + thread1.getState());
        thread1.start();
        System.out.println("thread1状态为:" + thread1.getState());
        Thread.sleep(1000);
        System.out.println("thread1状态为:" + thread1.getState());
    }
}


class MyThread extends Thread {

    public MyThread() {
        System.out.println("进入MyThread构造方法的线程为:" + Thread.currentThread().getName());
    }

    @Override
    public void run() {
        System.out.println("当前线程为:" + Thread.currentThread().getName() + "  线程的状态为:"
                          + Thread.currentThread().getState());
    }
}

2. 线程组

可以把线程归到某一个线程组,线程组中可以有线程对象,也可以有线程组,这样的结构类似于树的形式。
执行main方法的线程名为:main,它所属线程组的组名也为:main。
线程或线程组会自动归属到当前线程组中。
当线程组调用interrupt方法时,这个线程组中的线程都会停止。
这里写图片描述

3. SimpleDateFormat非线程安全

解决方案:1) 每次都创建新的实例 2)ThreadLocal

4. 线程中出现的异常

当线程组中的其中一个线程出现异常时,其他线程不会受影响
线程异常处理机制:首先调用自带的异常处理,如果没有,然后调用线程组的异常处理,如果调用默认的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

《Java并发编程实战》第七章 取消与关闭 读书笔记

Java没有提供任何机制来安全地(抢占式方法)终止线程,虽然Thread.stop和suspend等方法提供了这样的机制,但是由于存在着一些严重的缺陷,因此应该避免使用。但它提供了中断Interrup...
  • love_world_
  • love_world_
  • 2014年05月28日 08:02
  • 1323

java语言程序设计基础篇第七章编程练习题

1 import java.util.Scanner; public class Main{ public static void main(String[] args){ int maxSc...
  • gyhguoge01234
  • gyhguoge01234
  • 2016年07月09日 17:12
  • 3835

Java——第七章(进程和多线程)

常常在任务管理器当中可以看到进程,系统进程什么的,但是究竟这个是什么东东?有仔细想过吗?进程是正在运行的程序,其实不然,正在运行的程序不一定有一个进程,还可以有多个进程支持,每个应用程序都需要一个或多...
  • Li_peilun
  • Li_peilun
  • 2016年11月30日 13:43
  • 283

Java编程思想第四版*第七章*个人练习

练习1:(2)创建一个简单的类。第二个类中,将一个引用定义为第一个类的对象。运用惰性初始化来实例化 这个对象。 练习2:(2)从Detergent中继承产生一个新的类。覆盖scrub()并添加一个名为...
  • zhaoqingkaitt
  • zhaoqingkaitt
  • 2014年11月09日 11:13
  • 3098

Java编程思想第4版-第七章

第7章 复用类 复用代码是Java众多引人注目的功能之一。但要想成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须能够做更多的事情。 上述方法常为C这类过程型语言所使用,但收效...
  • lin75312
  • lin75312
  • 2016年08月15日 21:25
  • 942

Java并发编程实战(学习笔记六 第七章 取消与关闭 下)

取消与关闭
  • ahaha413525642
  • ahaha413525642
  • 2017年08月08日 10:06
  • 158

C++Primer 中文版 第五版 第七章课后习题答案

//7.1 #include #include using namespace std; struct Sales_data { string bookNo; unsigned unit...
  • Little_boy_z
  • Little_boy_z
  • 2016年06月08日 20:07
  • 1652

龙书D3D11章节习题答案(第七章)

以下答案仅供参考,有错欢迎留言。 Chapter 7: Lighting
  • tjj00686
  • tjj00686
  • 2016年05月07日 16:07
  • 1241

C++ Primer Plus 第六版(中文版)课后编程题----第七章

7.1 #include using namespace std; double Harmonics(double, double); int main() { double a, b; c...
  • Lmerissa
  • Lmerissa
  • 2016年01月08日 09:56
  • 367

第七章:多线程

一、线程概述几乎所有的操作系统都支持同时运行过个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。1、线程和进程...
  • xiaoxiaobukuang
  • xiaoxiaobukuang
  • 2016年06月21日 12:23
  • 3546
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java多线程(第七章)
举报原因:
原因补充:

(最多只允许输入30个字)