查看“核心技术:并发”的源代码
←
核心技术:并发
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:JavaCore]] == 什么是线程 == 一个程序同时执行多个任务,每一个任务称为一个线程(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( ) *: 必须覆盖这个方法, 并在这个方法中提供所要执行的任务指令。 == 中断线程 == 当线程的run 方法执行方法体中最后一条语句后,并经由执行return 语句返冋时,或者出现了在方法中没有捕获的异常时,线程将终止。<br> * 在Java 的早期版本中,还有一个stop方法,其他线程可以调用它终止线程。 *: 因为,stop会瞬间强行停止一个线程,且该线程持有的锁并不能释放;所以,这个方法现在已经被弃用了。 * '''[[Java中断及中断响应]]''' === 相关方法 === ===== java.Iang.Thread ===== * void interrupt() *: 向线程发送中断请求。线程的中断状态将被设置为true。如果目前该线程被一个sleep调用阻塞,那么, InterruptedException 异常被抛出。 * static boolean interrupted() *: 测试当前线程(即正在执行这一命令的线程)是否被中断。注意,这是一个静态方法。这一调用会产生副作用—它将当前线程的'''中断状态重置为false'''。 * boolean islnterrupted() *: 测试线程是否被终止。不像静态的中断方法,这一调用不改变线程的中断状态。 * static Thread currentThread() *: 返回代表当前执行线程的Thread 对象。 == 线程状态 == == 线程属性 == == 同步 == == 阻塞队列 == == 线程安全的集合 == == Callable 与 Future == == 执行器 == == 同步器 == == 线程与Swing ==
返回至“
核心技术:并发
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息