JAVA多线程编程

一、java多线程编程概念

  1、进程:同一个操作系统中执行的一个子程序,包含了三部分虚拟CPU、代码、数据

  2、多线程:同一个操作系统中执行的多个并行的子程序。可以提高cpu的使用率。

  3、线程:在同一个进程当中执行的子程序流。

  4、多线程:同一个进程当中并发执行的多个子程序流。可以提高cpu的使用率。

  5、并发:进程是并发运行的,OS将时间划分为很多时间片段(时间片),尽可能均匀分配给正在运行程序,微观上进程走走停停,宏观上都在运行,这种运行的现象叫并发,但不是绝对意义上的“同时发生”。

  6、进程和线程的区别:

    进程有独立的进程空间,进程中的数据存放空间(堆空间和栈空间)是独立的。

    线程的堆空间是共享的,栈空间是独立的,线程消耗的资源也比进程小,相互之间可以影响的。

二、线程编程的两种方法

  1、继承Thread类,重写run()方法

  2、实现Runnable接口,实现run()方法

三、线程的状态

  1、NEW 新建状态:当程序用new关键字创建线程之后,该线程就处于新建状态,此时线程还未启动,当线程对象调用start()方法时,线程启动,进入Runnable状态

  2、Runnable 可运行(就绪)状态:当线程处于Runnable状态时,表示线程准备就绪,等待获取CPU

  3、Running运行(正在运行)状态:假如线程获取了CPU,则进入Running状态,开始执行线程体,即run()方法中的内容。调用yield()状态,可以是线程由Running状态进入Runnable状态

  4、Block阻塞(挂起)状态:当如下情况下,线程会进入阻塞状态:

    ①线程调用了sleep()方法主动放弃所占CPU资源

    ②线程调用了一个阻塞式IO方法(比如控制台输入方法),在该方法返回前,该线程被阻塞

  当阻塞结束时,该线程将进入Runnable状态,而非直接进入Running状态。

  5、Dead 死亡状态:

    ①当线程的run()方法执行结束,线程进入Dead状态

    ②不能对一个已经死亡的线程调用start()方法,线程死亡后将不能再次作为线程启动,系统会抛出异常

四、注意

  1、new

http://home.feifeishijie.com/thread-430816-1-1.html

猜你喜欢

转载自www.cnblogs.com/a591378955/p/8912017.html