码迷,mamicode.com
首页 > 编程语言 > 详细

Java多线程

时间:2020-02-25 00:06:35      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:过程   也有   runnable   执行   优先   mda   完成   oid   有一个   

Java多线程编程

  Java给多线程编程提供了内置的支持。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源消耗。这里定义和线程相关的另一个术语—进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守护线程都结束运行后才能结束。多线程能满足程序员编写高效率的程序来达到充分利用CPU的目的。

一个线程的生命周期

  线程是一个动态执行的过程,它也有一个从产生到死亡的过程。

  新建状态:使用new关键字和Thread类或者其子类建立一个线程对象后,该线程对象就处于新建状态,它保持这个状态直到程序start()这个线程。

  就绪状态:当线程对象调用了start()这个方法后,该线程就进入了就绪状态,就绪状态的线程进入线程就绪队列等待JVM调度器的调用。

  运行状态:如果就绪状态的线程获取了CPU资源,它就会执行run()方法,此线程进入运行状态,运行状态可以转变为阻塞状态、就绪状态和死亡状态。

  阻塞状态:如果一个线程执行了sleep、suspend等方法,失去所占用资源之后,该线程就会从运行状态变为阻塞状态,在睡眠时间已到或获得设备资源后可以重新进入就绪状态。等待阻塞:运行状态中的线程执行wait()方法,使线程进入到等待阻塞状态。同步阻塞:线程在获取synchronized同步锁失败,因为同步锁被其他进程占用。其他阻塞:通过调用线程的sleep()或join()发出了I/O请求,线程就会进入到阻塞状态,当sleep()状态超时时,join()等待线程终止或超时,或者I/O处理完毕,线程重新转入就绪状态。

  死亡状态:一个运行状态的线程完成任务或者其他终止条件发生时,该线程就切换到终止状态。

线程的优先级

  每一个Java线程都有一个优先级,这样有助于操作系统确定线程的调度顺序。Java线程的优先级是一个整数,其取值范围是1(Thread.MIN_PRIOTITY)--10(Thread.MAX_PRIORITY)。默认情况下,每一个线程都会分配一个优先级。具有较高优先级的线程对程序更重要,并且应该在低优先级的线程之前分配处理器资源。但是,线程优先级不能保证线程执行的顺序,而且非常依赖于平台。

创建一个线程

  Java提供了三种创建线程的方法:1.通过Runnable接口2.通过继承Thread类本身3.通过Callable和Future创建线程。

通过实现Runnable接口来创建线程

  创建一个线程,最简单的方法是创建一个实现Runnable接口的类。为了实现Runnable,一个类只需要执行一个方法调用run(),声明如下:public void run()

Java多线程

标签:过程   也有   runnable   执行   优先   mda   完成   oid   有一个   

原文地址:https://www.cnblogs.com/1996yrb/p/12359569.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!