JAVA2核心技术卷II:高级特性(原书第7版) -- 第1章. 多线程

本文深入探讨了Java多线程的高级特性,包括实现线程的两种方式(实现Runnable接口和继承Thread类)、启动线程、中断线程的方法、线程状态、线程同步(锁对象、synchronized关键字)、死锁、阻塞队列、线程安全的集合和线程池的使用。同时,介绍了Callable和Future接口,以及如何创建和管理线程池。
摘要由CSDN通过智能技术生成

1. Thread.sleep(long millis): 休眠制定的毫秒数。

2. 实现多线程的两种方法

    2.1 实现Runnable接口

        class BallRunnable implements Runnable {

            public void run() {  //需要try..catch来捕获异常

                try{

                    do something

                } catch (InterruptedException) {}

            }

        }

    2.2 继承Thread

        class MyThread extends Thread {

            public void run() {task code}

        }

    2.3 启动线程

        Ball b = new Ball();

        panel.add(b);

        Runnable r = new BallRunnable(b, panel);

        Thread t = new Thread(r);

        t.start();

        不要调用Thread类或者Runnable对象的run方法,直接调用只会在当前线程中执行任务,并不会启动新线程。

3. 中断线程

    JDK1.0 stop() 现在已经被弃用,现在使用interrupt方法来请求终止一个线程,步骤如下:

    Thread.currentThread().isInterrupted() //首先取得当前线程,然后调用isInterrupted()来判断给线程是否中断

    如果一个线程被阻塞,而调用isInterrupted() ,将会产生InterruptedException异常

    void interrupt(): 发送一个中断给一个线程,这个线程的中断状态将为True,如果当前线程被sleep调用,将抛出InterruptedException异常。常在catch(InterruptedException e) {Thread().currentThread().interrupt();}

    static boolean interrupted(): 检查当前线程是否被中断,调用它将清除该线程的中断状态

    boolean isInterrupted(): 检查线程是否被终止,而不会改变中断状态的值

4. 线程状态

    New(新生)、Runnable(可运行)、Blocked(被阻塞)、Dead(死亡)

    isAlive(): 如果线程已经启动并还没有被终止,返回true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值