zoukankan      html  css  js  c++  java
  • 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. 实现Runnable接口

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

    }
    }


  • 相关阅读:
    第四次作业—— 分析比较各种软件构建环境
    如何实现点击事件触发之后刷新还保存原值
    简单理解js闭包
    javascript中 __proto__与prorotype的理解
    原生和jQuery的ajax用法
    getElementById和querySelector方法的区别
    关于javascript闭包理解
    第二篇 进销存管理系统冲刺博客
    个人项目:WC
    自我介绍+软工五问
  • 原文地址:https://www.cnblogs.com/cwj1102/p/13346081.html
Copyright © 2011-2022 走看看