Java多线程编程入门

来源:互联网 发布:阿里云学生服务器购买 编辑:程序博客网 时间:2024/05/16 01:14

Java的其中一个优势就是处理多线程简单


要介绍多线程的概念,就不得不提进程、线程和并发的概念。

多线程:用时间运行多个任务。

对于操作系统级别同时运行的任务,称为进程。

对于一个应用程序而言,同时运行的任务称为一个线程。


多线程是并发运行的,所谓并发操作,就是每个任务都是走走停停,CPU分配时间片段来运行一个任务时,其他任务就处于暂停状态。CPU尽可能均匀的运行所有的任务,这种在宏观上看起来是同时运行,而微观角度上是走走停停的现象叫做并发。


现在来讨论Java中的多线程

 Thread类: Thread类的实例表示一个线程。我们要是想并发执行任务,则可以继承该类,并重写run方法来定义并发执行的任务逻辑,从而达到并发操作的目的。

创建线程的第二种方式:将线程与线程要执行的任务分离开。

定义线程任务

 Runnable接口:定义线程体只需要实现Runnable接口,并重写run方法。


下面介绍线程的运行原理

线程运行原理:创建线程并指派任务后,调用start()方法启动线程,这时会将该线程纳入线程调度机制。被纳入线程调度机制的线程会被分配CPU时间段,得以并发运行。

分配时间片段时,CPU运行该线程的任务,当时间片用完后,该任务暂停,这样走走停停。直到线程任务执行完毕,线程退出。并被垃圾回收机制释放。

线程常用方法:

void start()  启动线程的方法

static void yield()    让当前处于运行的线程主动放弃当次CPU时间,进入Runnable状态。

static void sleep(long time)   使当前线程进入睡眠阻塞(sleep blcok),时间为给定的time描述的毫秒值。当时间超过后,会自动回到Runnable状态。

void interrupt()  中断线程   

final void setPriority(int p)设置线程的优先级

理论上,优先级越高的线程,获取CPU运行的机会多。但这不是可控的。优先级1-10, 1最低,10最高,线程默认优先级为5

final void join() 等待该线程终止 

守护线程(后台线程):当一个进程中,所有的前台线程都结束时,无论守护线程是否结束,都会强制停止,并使得进程结束。

后台线程是通过线程的方法设置的。 setDaemon(boolean b) 当参数为true时,这个线程就是后台线程了,该方法要在调用start()方法前调用才有效!

0 0
原创粉丝点击