“核心技术:并发”的版本间差异
跳到导航
跳到搜索
无编辑摘要 |
(→什么是线程) |
||
第2行: | 第2行: | ||
== 什么是线程 == | == 什么是线程 == | ||
一个程序同时执行多个任务,每一个任务称为一个线程(thread), 它是线程控制的简称。 | |||
* 进程与线程有的区别,在于每个进程拥有自己的一整套变量, 而线程则共享数据。 | |||
*: 共享变量使线程之间的通信比进程之间的通信更有效、更容易。 | |||
=== 使用线程 === | |||
实现线程的两种方式: | |||
# 实现'''Runnable'''接口,利用接口构造Thread对象;(Runnable 是一个函数式接口,可以用lambda 表达式) | |||
#: <syntaxhighlight lang="java"> | |||
Runnable r = () -> { /*task code*/ }; | |||
Thread t = new Thread(r); | |||
</syntaxhighlight> | |||
# 继承'''Thread'''类,构造一个子类的对象; | |||
#: <syntaxhighlight lang="java"> | |||
class MyThread extends Thread | |||
{ | |||
public void run() | |||
{ | |||
//task code | |||
} | |||
} | |||
</syntaxhighlight> | |||
* 不要调用Thread类或Runnable对象的run方法,而应该调用Thread.start方法。 | |||
*: 直接调用run 方法,只会执行同一个线程中的任务,而不会启动新线程。 | |||
==== 相关方法 ==== | |||
===== java.Iang.Thread ===== | |||
* Thread( Runnable target ) | |||
*: 构造一个新线程, 用于调用给定目标的nm() 方法。 | |||
* void start( ) | |||
*: 启动这个线程, 将引发调用mn() 方法。这个方法将立即返回, 并且新线程将并发运行。 | |||
* void run( ) | |||
*: 调用关联 Runnable 的run 方法。 | |||
* static void sleep(long minis) | |||
*: 休眠给定的毫秒数。参数:millis 休眠的毫秒数 | |||
===== java.lang.Runnable ===== | |||
* void run( ) | |||
*: 必须覆盖这个方法, 并在这个方法中提供所要执行的任务指令。 | |||
== 中断线程 == | == 中断线程 == | ||
== 线程状态 == | == 线程状态 == |
2020年10月19日 (一) 13:41的版本
什么是线程
一个程序同时执行多个任务,每一个任务称为一个线程(thread), 它是线程控制的简称。
- 进程与线程有的区别,在于每个进程拥有自己的一整套变量, 而线程则共享数据。
- 共享变量使线程之间的通信比进程之间的通信更有效、更容易。
使用线程
实现线程的两种方式:
- 实现Runnable接口,利用接口构造Thread对象;(Runnable 是一个函数式接口,可以用lambda 表达式)
Runnable r = () -> { /*task code*/ }; Thread t = new Thread(r);
- 继承Thread类,构造一个子类的对象;
class MyThread extends Thread { public void run() { //task code } }
- 不要调用Thread类或Runnable对象的run方法,而应该调用Thread.start方法。
- 直接调用run 方法,只会执行同一个线程中的任务,而不会启动新线程。
相关方法
java.Iang.Thread
- Thread( Runnable target )
- 构造一个新线程, 用于调用给定目标的nm() 方法。
- void start( )
- 启动这个线程, 将引发调用mn() 方法。这个方法将立即返回, 并且新线程将并发运行。
- void run( )
- 调用关联 Runnable 的run 方法。
- static void sleep(long minis)
- 休眠给定的毫秒数。参数:millis 休眠的毫秒数
java.lang.Runnable
- void run( )
- 必须覆盖这个方法, 并在这个方法中提供所要执行的任务指令。