java 多线程介绍

Posted cwj1102

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 多线程介绍相关的知识,希望对你有一定的参考价值。

1.线程和进程的概念

1.1什么是进程?进程是线程的集合,是正在运行的程序,一个进程里面至少有一个线程。

技术图片

 

1.2什么是线程?正在独立执行的一条路径。

技术图片

 

1.3什么是多线程:就是一个进程里面同时有多个线程运行,多线程是为了提高程序效率。

技术图片

 

 

 

 

2.创建线程

2.1. 集成Thread类创建线程

  1. 创建一个类继承Thread 类
  2. 实现run 接口
  3. 在main方法里面 创建子类的对象
  4. 调用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接口

  1. 创建一个类实现Runnable接口
  2. 实现接口的run方法
  3. 在main方法里面 创建子类的对象
  4. 创建Thread的类,将子类对象作为参数放到Thread类的构造函数里面
  5. 调用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.多线程的运行状态
  1. 新建
  2. 准备
  3. 运行
  4. 休眠
  5. 停止

技术图片

 

 

4.join方法 的使用

join就是让出当前正在运行的线程,让调用join方法的线程先执行完毕,在执行其他线程
  1. 创建一个类
  2. 创建一个匿名内部类的线程调用Runnable接口
  3. 在run 方法里面写一个for循环
  4. 在主线程里面写一个for 循环
  5. 第五步:调用子线程的start 方法,启动线程
  6. 第六步:在主线程里面先调用子线程的 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 多线程介绍的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程具体解释

Java多线程——Lock&Condition

Java多线程学习笔记

多线程 Thread 线程同步 synchronized

Java 多线程实现的三种方式

JAVA SE基础篇54.多线程介绍和创建