(一)基本概念
①程序:一个指令的集合;
②进程:正在执行中的程序;(资源分配的单位)
③线程:进程中的一个执行路径。(调度和执行的单位)
(注:一个进程中必须存在主线程,主线程运行的代码存在main方法中)
(二)Thread类
①Thread(Runnable target, String name)构造方法:分配新的 Thread 对象。
②currentThread方法:返回对当前正在执行的线程对象的引用。
③getName方法:返回该线程的名称。
④getState方法:返回该线程的状态。
返回值: NEW——新生状态; RUNNABLE——运行状态; BLOCKED——阻塞状态; WAITING——等待唤醒;
TIMED_WAITING——等待指定时间长度; TERMINATED——死亡状态。
⑤getPriority方法:返回线程的优先级。
⑥setPriority(int newPriority):更改线程的优先级(优先级设定在1~10之间,默认值为5)。
⑦isAlive方法:测试线程是否处于活动状态。
返回值:线程处于活动状态——true;否则——false。
⑧join方法:等待该线程终止(该线程强制执行,其它线程处于阻塞状态)。
⑨sleep(long millis)方法:在指定的毫秒数内让当前正在执行的线程休眠,线程处于阻塞状态。
⑩yield方法:暂停当前线程对象执行一次,该线程返回就绪状态。
(三)多线程的实现1——继承Thread类
①继承Thread类;
②重写run方法,将要执行的代码写入run方法中;
③创建线程对象,调用start方法启动线程。
public class Test {
public static void main(String[] args) {
MyThread mt = new MyThread();
mt.start();
for (int i = 0; i < 100; i++) {
System.out.println("Main" + i);
}
}
}
public class MyThread extends Thread{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("MyThread"+i);
}
}
}
(四)多线程的实现2——实现Runnable接口
①创建Thread类,实现Runnable接口;
②实现run方法;
③创建一个实现Runnable接口的类的对象,用该对象来构造Thread对象;
④调用start方法启动线程。
public class Test {
public static void main(String[] args) {
MyThread02 mt = new MyThread02();
Thread th = new Thread(mt);
th.start();
for (int i = 0; i < 100; i++) {
System.out.println("Main" + i);
}
}
}
public class MyThread02 implements Runnable{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("MyThread"+i);
}
}
}
(五)多线程的实现3——实现Callable接口
①创建Thread类,实现Callable接口;
②创建一个实现Callable接口的类的对象
③创建一个FutureTask类的对象,用该对象来构造Thread对象;
④调用start方法启动线程。
public class Test { public static void main(String[] args) {
Callable<T> oneCallable = new SomeCallable<T>();
FutureTask<T> oneTask = new FutureTask<T>(oneCallable);
Thread oneThread = new Thread(oneTask);
oneThread.start();
}
}
public interface Callable<T> { T call() throws Exception; }
public class SomeCallable<T> extends OtherClass implements Callable<T> {
@Override
public T call() throws Exception {
return null;
}
}
(六)线程的状态
①新生状态:无资源、无资格;
②就绪状态:有资格、无资源;
③运行状态:有资源、有资格;
④阻塞状态:无资格、让资源;
⑤死亡状态:线程结束。
(七)线程的运行过程
过程①:调用start方法,进入就绪状态;
过程②:CPU调度该线程,进入运行状态;
过程③:run方法执行完毕、线程被强制结束或抛出未捕获异常;
过程④:发生导致线程阻塞的事件;
过程⑤:阻塞的事件结束,重新进入就绪状态;
过程⑥:CPU片段时间到,线程未执行完毕,返回就绪状态。
———————————————————————————————————————————————————————————————————
The end @ 万有引力+
-
-
-
-
-
原文:https://www.cnblogs.com/wyyl-/p/10749294.html