美文网首页
Java多线程编程

Java多线程编程

作者: 禹雪 | 来源:发表于2017-03-03 07:14 被阅读0次

    线程:程序中单独顺序的控制流,线程本身依靠程序进行运行,线程是程序中的顺序控制流,只能使用分配给程序的资源和环境。

    进程:执行中的程序,一个进程至少要包含一个线程。

    单线程:程序中只存在一个线程,实际上主方法就是一个主线程。

    多线程:多线程是在一个程序中运行多个任务,多线程目的是更好的使用CPU资源。

    二、线程的实现
    线程的实现2种:
    继承Thread类
    实现Runnable接口
    Thread类:
    Thread类是在java.lang包中定义的,继承Thread类必须重写run()方法。
    定义格式:
    class className extends Thread{
    run(){
    //此处重写run方法
    };
    }
    在实例中,我们测试了run()方法和start()方法,运行情况说明线程的启动一定不是通过run()方法的,没有并行机制,A执行完再执行B。start()方法执行过程中是并行的,哪个抢占资源运行哪个。
    Runnable接口:
    public class MyRunnable implements Runnable{
    run(){
    //重写run方法
    };
    }

    三、线程的状态

    创建状态:准备好了一个多线程的对象
    就绪状态:调用了start()方法,等待CPU进行调度
    运行状态:执行run()方法
    阻塞状态:暂时停止执行,可能将资源交给其他线程使用
    终止状态(死亡状态):线程销毁
    

    四、线程常用方法

    Thread类中:
        1.取得线程名称 getName()
        2.取得当前线程对象  currentThread()
        3.判断线程是否启动  isAlive()
        4.线程的强行运行  join()         需要使用try catch来捕获InterruptedException异常
        5.线程的休眠  sleep()  异常捕获同上  示例中在run方法中实现
        6.线程的礼让  yield()  示例中也在run方法中定义
    

    五、线程的优先级

    1.优先级顺序设置
          1 - MIN_PRIORITY
          10 - MAX_PRIORITY
          5 - NORM_PRIORITY
          默认状态下值为5
    Thread.setPriority()设置优先级,设置为MAX_PRIORITY的线程并不一定可以最先运行,是一种可能状态,有优势。
    

    六、线程同步

    1.同步代码块
          在代码块上加上“synchronized”关键字,则此代码块就成为同步代码块。资源共享的时候使用同步。
     2.同步代码块的格式:
           synchronized(同步对象) {
                  需要同步的代码块;
           }
     3.同步方法
          除了代码块可以同步,方法也是可以同步的
     4.方法同步格式:
          synchronized void 方法名称() {}
     5.死锁 
    

    七、线程的生命周期

    线程的生命周期.png

    相关文章

      网友评论

          本文标题:Java多线程编程

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