创建: 2020/12/11
完成: 2020/12/11
java.lang.Thread
https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html
创建 |
直接重载Thread类 |
new Thread() {
@Override
public void run() {
...
}
}
|
构造函数里给Runnable |
- 先实现Runnable再传递
class RunnableDummy implements Runnable {
public void run() {
...
}
}
Thread t = new Thread(new RunnableDummy());
- 用匿名类
Thread t = new Thread(new Runnable() {
@Override
public void run() {
...
}
});
- 直接作为lamda函数传递
Thread t = new Thread(() -> {...});
|
|
静态常量 |
MAX_PRIORITY |
|
NORM_PRIORITY |
|
MIN_PRIORITY |
|
|
构造函数 |
Thread() |
|
Thread(Runnable target) |
|
Thread(Runnable target, String name) |
|
Thread(String name) |
|
Thread(ThreadGroup, group, Runnable target) |
|
Thread(ThreadGroup group, Runnable target, String name) |
|
Thread(ThreadGroup group, RUnnable target, String name, long stackSize) |
|
Thread(ThreadGroup group, String name) |
|
|
静态方法 |
static Thread currentThread() |
|
static void sleep(long msec) throws InterruptedException |
|
static void sleep(long msec, int nsec) throws InterruptedException |
|
static void yield() |
把CPU使用权让给其他线程 |
static boolean holdsLock(Object obj) |
|
static boolean interrupted() |
|
|
实例方法 |
属性 |
long getId() |
|
String getName() |
获取Thread名称
|
int getPriority() |
|
Thread.State getState() |
返回状态
Thread.State
NEW |
没启动 |
RUNNABLE |
运行中 |
BLOCKED |
?
A thread that is blocked waiting for a monitor lock is in this state.
|
WAITING |
等候其他thread |
TIMED_WAITING |
待机中(sleep) |
TERMINATED |
结束 |
|
ThreadGroup getThreadGroup() |
获取所属的thread group |
|
|
|
|
|
|
|
|
|
|
|
|
|
设置 |
void setDaemon(boolean b) |
|
void setName(String name) |
|
void setPriority(int p) |
|
|
|
|
判断 |
boolean isAlive() |
除去NEW和TERMINATED外的状态都是alive
(呼出start起到结束进程为止)
|
boolean isDaemon() |
是否是守护进程
|
boolean isInterrupted() |
|
|
|
|
|
|
void interrupt() |
|
join
|
在进程结束前停止主进程
void join() throws InterruptedException
|
|
void join(long msec) throws InterruptedException |
至多等待参数时间 |
void join(long msec, int nsec) throws InterruptedException |
同上 |
|
void run() |
thread的具体操作, 被@Override |
void start() |
|
String toString() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
多线程下的同步 |
方法前加上 synchronized |
静态方法锁类,实例方法锁实例
- 即同步下面obj里的方法
- 同时只准一个线程去运行方法
|
synchronized代码块 |
synchronized (obj) {
...
}
|
|
线程间的通讯 |
Object的实例方法
void wait() throws InterruptedException
void wait(long msec) throws InterruptedException
void wait(long msec, int nsec) throws InterruptedException
|
|
void notify() |
呼出notify()/notifyAll()仅通知其他thread,不会关锁
(运行出synchronized代码块或方法才会解锁)
|
void notifyAll() |
|
|
|
|
更好的通讯 |
java.utli.concurrent
|