【JAVA】Java 线程

java 线程

一、线程状态

  • 1、new: 线程使用new方法创建之后 调用start()方法之前
  • 2、runnable: 线程调用start() 方法之后
  • 3、non-runnable: 线程被挂起或发生阻塞而产生的状态,例如
    • 线程调用sleep()
    • 线程调用wait() ps. 再次调用notify()/notifyAll()才能回到可运行状态
    • 线程suspend ps. resume 恢复
    • 阻塞IO
  • 4、done: 线程调用stop() 方法后,线程 run()方法完成后

二、线程优先级

优先级高的线程先抢占cpu并得以执行,所获得的cpu时间片也多,执行效率高,执行速度快

// newPriority 只能取值1-10 数字越低优先级越高
public final void setPriority(int newPriority)

三、synchornized 关键字使用

// 1、同步方法
class 类名{
    public synchornized 返回值 方法名(){}
}
// 2、同步对象
synchornized (obj){}

四、锁

  • 1、死锁: 两个小孩打架 谁也不让谁

五、线程方法详解

  • 1、join()
     // main 相当于主线程
    // 子线程调用join()方法后,主线程会一直等待子线程的完成
    public static void main(String[] args) throws InterruptedException {

        ChildThread childThread = new ChildThread();
        childThread.start();
        childThread.join();

        System.out.printf("%s 主线程结束 \n",Thread.currentThread().getName());

    }


    // 子线程
    static class ChildThread extends Thread {
        public void run() {
            try {
                Thread.sleep(5*1000);
                System.out.printf("%s 子线程结束 \n",Thread.currentThread().getName());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
posted @ 2019-05-19 10:30  加州风尘  阅读(172)  评论(0编辑  收藏  举报