java什么是线程_java 多线程介绍

1.线程和进程的概念

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

d8fed05233fdacb501567a2f1ba5aeb6.png

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

7f39d782e5e61e32e9b5a4ec8c6dafe2.png

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

112bf44cfb167d98b4fda3f7454ff83d.png

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. 实现Runnable接口

创建一个类实现Runnable接口

实现接口的run方法

在main方法里面 创建子类的对象

创建Thread的类,将子类对象作为参数放到Thread类的构造函数里面

调用Thread的start方法 启动线程

创建类实现Runable接口,实现接口中的run方法

class CreateRunnable 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 RunnableDemo{

public static void main(String[] args) {

CreateRunnable createRunnble = newCreateRunnable();

Thread thread = new Thread(createRunnble);

thread.start();

for (int i = 0; i < 5; i++) {

System.out.println("主线程:" + i);

}

}

}

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();

}

}

总结:实现 Runnable 接口 要比继承 Thread 类好点,因为java是面向接口编程的

3.多线程的运行状态

新建

准备

运行

休眠

停止

57f13f000a49c7ae154cb677943919a3.png

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);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值