前言
- 进程:当前正在运行的程序,一个应用程序在内存中的执行区域
- 线程:进程中的一个执行控制单元,执行路径
- 一个进程可以有一个线程,也可以有多个线程
- 单线程:安全性高,但是效率低
- 多线程:安全性低,效率高
一、多线程的实现方式:
方式1:一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例
方式2:创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动
-
String getName() 返回该线程的名称。
-
void setName(String name) 改变线程名称,使之与参数 name 相同。
二、类声明为 Thread 的子类
1.将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。
代码如下(示例):
public class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(getName()+i);
}
}
}
2.创建第二个类,接下来可以分配并启动该子类的实例
代码如下(示例):
public class ThreadDemo2 {
public static void main(String[] args) {
//创建线程实例
MyThread t = new MyThread();
t.setName("第一个线程:");
//启动线程
t.start();
MyThread t2 = new MyThread();
t2.setName("第二个线程");
//启动线程
t2.start();
}
}
3.结果,两个随机输出到99。
三、实现 Runnable 接口的类
1.声明实现 Runnable 接口的类。该类然后重写 run 方法。
代码如下(示例):
public class MyThread2 implements Runnable {
int num;
public MyThread2(int num) {
this.num = num;
}
@Override
public void run() {
for (int i = 0