多线程

作者: Suavitygogo | 来源:发表于2017-03-04 16:31 被阅读0次

    程序启动后变为进程,进程由单或多个线程组成。

    多线程:并行,共享资源,实现多任务。

    五个状态:新建,就绪,运行,阻塞,死亡

    JVM的线程调度模式采用了抢占式模式,即根据线程的优先级来获取CPU的使用权。

    主线程:JVM调用程序main()所产生的线程。

    当前线程:一般指通过Thread.currentThread()来获取的进程。

    后台线程:指为其他线程提供服务的线程,也称为守护线程。JVM的垃圾回收线程就是一个后台线程。

    前台线程:是指接受后台线程服务的线程,其实前台后台线程是联系在一起,就像傀儡和幕后操纵者一样的关系。傀儡是前台线程、幕后操纵者是后台线程。由前台线程创建的线程默认也是前台线程。

    创建多线程的方法:Thread类实际上也是实现了Runnable接口的类

    a.实现Runnable接口,实现run方法<线程体>,调用方式:new Thread(new MyRunnable()).start();

    b.继承Thread类,重写run方法<线程体>,调用方式:new MyThread().start();

    常见方法:

    start():新建的线程进入Runnable状态

    run():线程进入Running 状态

    isAlive():是否在活动状态,如果线程已经启动且尚未终止,则为活动状态。如果是活动状态,返回 true;否则 false

    wait():JVM会把该线程放入等待池中,线程进入等待状态,等待被notify,这是一个对象方法,而不是线程方法

    notify() / notifyAll():唤醒其他的线程,这是一个对象方法,而不是线程方法

    yield():线程放弃执行,使其他优先级不低于此线程的线程有机会运行,它是一个静态方法

    getPriority() / setPriority():获得/设置线程优先级(1->10),默认5

    sleep():JVM会把该线程置为阻塞状态,线程睡眠指定的一段时间

    join():JVM会把该线程置为阻塞状态,调用这个方法的主线程,会等待加入的子线程执行完成

    setDaemon(thread):设置后台线程(守护线程)

    同步机制:控制资源的一致性,加锁

    synchronized: 同步方法和对象

    volatile:同步变量<除final常量外其余均可修饰>

    相关文章

      网友评论

        本文标题:多线程

        本文链接:https://www.haomeiwen.com/subject/rbljgttx.html