Java多线程笔记
来源:互联网 发布:java做的图书管理系统 编辑:程序博客网 时间:2024/06/01 08:01
线程各个状态转换图
多线程中常用API总结
/*Thread类的静态sleep方法将暂停当前线程给定的毫秒数,该方法可以抛出InterruptedException异常。因此,如果代码中用到了sleep()方法,那么我们的整个代码需要try{}···catch(InterruptedException){}包围来捕获该异常*/java.lang.Threadstatic void sleep(long mills)
/*创建一个新线程,用来调用给定对象的run()方法,该对象所对应的类需要实现Runnable接口并重写run()方法*/java.lang.ThreadThread(Runnable target)
/*该方法用来启动线程,并引发调用run()方法。其会立即放回并且新新线程会并行执行*/java.lang.Threadvoid start()
/*该方法用于调用关联接口Runnable中的run()方法,实际调用的是重新实现了该接口的类中的run()方法*/java.lang.Threadvoid run()
/*向线程发送中断请求,如果该线程正处在休眠或阻塞状态,则抛出InterruptedException异常,否则将中断状态置为true并中断线程*/java.lang.Threadvoid interrupt()
/*测试当前线程是否被中断,该方法调用会将当前线程的中断状态置为false*/java.lang.Threadstatic boolean interrupted()/*作用同上,但其调用并不会将当前的中断状态置为false*/boolean isInterrupted()
/*返回代表当前执行线程的Thread对象*/java.lang.Threadstatic Thread currentThread()
java.lang.Thread/*这两个方法都有可能抛出InterruptedException异常*//*等待终止指定的线程*/void join()/*等待终止指定的线程,或者等待指定线程运行mills毫秒*/void join(long mills)
/*得到这一线程的状态(NEW RUNNABLE BLOCKED WAITING TIMED_WAITING TERMINATED)*/java.lang.ThreadThread.State getState()
多线程中常见代码结构
- 下面在一个单独线程中执行一个任务的简单过程
1). 将任务代码移到实现了Runnable接口的类的run方法中,接口如下
public interface Runnable{ void run();}//实现该接口类的代码如下:class MyRunnable implements Runnable{ public void run() { /*任务代码*/ }}
2). 创建一个类对象
Runnable r = new MyRunnable();
3). 由Runnable创建一个Thread对象
Thread t = new Thread(r);
4). 启动线程
t.start();
注:不要直接调用Thread类或Runnable对象中的run()方法,如果直接调用只会执行同一个线程中的任务,而不会启用新线程。只有调用Thread.start方法才会创建一个执行run()方法的新线程
- 中断线程常见代码结构
public void run(){ try { ··· while(!Thread.currentThread().isInterrupted() && more work to do) { /*任务代码*/ } } catch (InterruptedException e) { /*线程处于阻塞或休眠状态时,抛出该异常*/ } finally { }}
注:如果在run()方法中循环调用sleep()方法,则无法检测到中断状态。因为,当线程处于中断状态时,调用sleep()方法并不会导致休眠,而如果在休眠状态中断,则会抛出InterruptedException异常
0 0
- java笔记--java多线程
- Java多线程笔记
- Java多线程学习笔记
- java笔记8多线程
- Java多线程学习笔记
- Java多线程阅读笔记
- java 多线程笔记。
- Java学习笔记---多线程
- java多线程笔记
- JAVA多线程笔记
- java多线程笔记
- java笔记 多线程总结
- JAVA 多线程 笔记
- java多线程学习笔记
- Java多线程讲解笔记
- JAVA笔记:多线程入门
- Java多线程学习笔记
- Java多线程笔记
- Chrome扩展及应用开发 入门笔记(一)
- 剖析微信公众平台第三方开发
- vb.net 调用wininet.dll的FTP上传文件方法失败
- Android 新控件RecyclerView
- JSTL中if...else...逻辑判断的简单用法
- Java多线程笔记
- php JpGraph 安装配置 基础学习
- 嘻唰唰第五批之三 抽象基类
- Access to the path "Library\UnityAssemblies\UnityEngine.xml" is denied.
- MYSQL索引及慢查询优化简析
- Git的分支管理
- android.content.res.Resources$NotFoundException: String resource ID #0x1
- Objective-C语法之KVC使用
- 转的别人的学习建议