java 多线程介绍
Posted cwj1102
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 多线程介绍相关的知识,希望对你有一定的参考价值。
1.线程和进程的概念
1.1什么是进程?进程是线程的集合,是正在运行的程序,一个进程里面至少有一个线程。
1.2什么是线程?正在独立执行的一条路径。
1.3什么是多线程:就是一个进程里面同时有多个线程运行,多线程是为了提高程序效率。
2.创建线程
2.1. 集成Thread类创建线程
- 创建一个类继承Thread 类
- 实现run 接口
- 在main方法里面 创建子类的对象
- 调用start 方法,启动线程
继承Thread 类 并实现run方法
class CreateThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("i:" + i);
}
}
}
在main方法中创建子类对象,调用start方法启动线程
public class ThreadDemo {
public static void main(String[] args) {
CreateThread createThread = new CreateThread();
createThread.start();
for (int i = 0; i < 5; i++) {
System.out.println("main i" + i);
}
}
}
2.2. 实现Runable接口
- 创建一个类实现Runnable接口
- 实现接口的run方法
- 在main方法里面 创建子类的对象
- 创建Thread的类,将子类对象作为参数放到Thread类的构造函数里面
- 调用Thread的start方法 启动线程
创建类实现Runable接口,实现接口中的run方法
class CreateRunnble implements Runnable {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("子线程 run,i" + i);
}
}
}
创建main函数,创建子类对象,创建Thread类对象,将子类对象作为参数传入,调用Thread类中的start方法启动线程
public class RunnbleDemo {
public static void main(String[] args) {
CreateRunnble createRunnble = new CreateRunnble();
Thread thread = new Thread(createRunnble);
thread.start();
for (int i = 0; i < 5; i++) {
System.out.println("主线程:" + i);
}
}
}
总结:实现 Runnable 接口 要比继承 Thread 类好点,因为java是面向接口编程的
2.3 使用匿名内部类创建线程
abstract class Insidedemo {
public abstract void test();
}
public class AnonymousDemo {
public static void main(String[] args) {
Insidedemo insidedemo = new Insidedemo() {
@Override
public void test() {
System.out.println("使用自定义内部类");
}
};
insidedemo.test();
}
}
3.多线程的运行状态
- 新建
- 准备
- 运行
- 休眠
- 停止
4.join方法 的使用
join就是让出当前正在运行的线程,让调用join方法的线程先执行完毕,在执行其他线程
- 创建一个类
- 创建一个匿名内部类的线程调用Runnable接口
- 在run 方法里面写一个for循环
- 在主线程里面写一个for 循环
- 第五步:调用子线程的start 方法,启动线程
- 第六步:在主线程里面先调用子线程的 start方法()在调用子线程的join ()方法,等待子线程执行完毕主线程在运行
如下代码:在主线程里面调用thread 线程的join方法,就会先执行thread 线程里面的 for 循环
public class ThreadDemo01 {
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("子线程运行:" + i);
}
}
});
thread.start();
thread.join();
for (int i = 0; i < 5; i++) {
System.out.println("主线程运行:" + i);
}
}
}
以上是关于java 多线程介绍的主要内容,如果未能解决你的问题,请参考以下文章