• Java多线程引例及实现多线程的方式


    多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。

    Java多线程是由JVM来实现,不必关心操作系统的调用问题。

    假如我们要实现如下功能:

    public class Test {
    	public static void main(String[] args) {
    		for(int i=0;i<100;i++){ //和尚念经100遍
    			System.out.println(i+"南无阿弥陀佛!");
    		}
    		for(int i=0;i<100;i++){ //道士讲经100遍
    			System.out.println(i+"道可道、非常道!");
    		}
    	}
    }
    

      即和尚念经100遍和道士讲经100遍

    传统方式我们只能等待一个人做完了,第二个人才能开始工作。而实际情况他们应该能够同时工作,且各干各的互不干扰。

    于是这时我们就要使用多线程技术。

    class HeShang extends Thread{ //继承Thread类
    	public void run(){ //把任务写进run方法里面
    		for(int i=0;i<100;i++){
    			System.out.println(i+"南无阿弥陀佛!");
    		}
    	}
    }
    class DaoShi extends Thread{
    	public void run(){
    		for(int i=0;i<100;i++){
    			System.out.println(i+"道可道、非常道!");
    		}
    	}
    }
    public class Demo {
    	public static void main(String[] args) {
    		HeShang heShang=new HeShang();
    		DaoShi daoShi=new DaoShi();
    		heShang.start();
    		daoShi.start();
    	}
    }
    

      运行后如图:

    刚才我们就实现了多线程

    Java中多线程实现方式主要有两种(1)继承Thread类(2)实现Runnable接口

    使用Runnable接口实现多线程

    class HeShang implements Runnable{
    	public void run(){
    		for(int i=0;i<100;i++){
    			System.out.println(i+"南无阿弥陀佛!");
    		}
    	}
    }
    class DaoShi implements Runnable{
    	public void run(){
    		for(int i=0;i<100;i++){
    			System.out.println(i+"道可道、非常道!");
    		}
    	}
    }
    public class Demo {
    	public static void main(String[] args) {
    		HeShang heShang=new HeShang();
    		DaoShi daoShi=new DaoShi();
    		//要用Thread来启动线程,代理设计模式
    		Thread t1=new Thread(heShang); //Thread构造方法可接收Runnable类型,向上转型,自动完成
    		t1.start();
    		new Thread(daoShi).start(); //匿名对象
    	}
    }
    

      因为Runnable接口没有run方法,所以实现Runnable接口的类(HeShang or DaoShi)没有start方法,但是Thread是有start方法的。

    我们使用代理,首先Thread构造方法可接收Runnable类型

    之后用Thread对象启动start方法。

    也可以使用匿名对象一行代码完成。

    运行后,也能够实现多线程,如图所示:

  • 相关阅读:
    css系列【div水平垂直居中的几个方法】
    Ajax系列【Ajax原生、jQuery发送Ajax、Axios发送Ajax、Fetch发送Ajax、解决跨域操作步骤】
    vue系列【vue中slot的使用方法】
    rust 在windows系统上构建linux可执行程序
    composer 引入本地指定包
    Go资料
    GO GIN框架(个人架构)
    剔除 和 不为空
    Xmind2021安装激活破解
    TCP segment of a reassembled PDU
  • 原文地址:https://www.cnblogs.com/mengxinrenyu/p/8095239.html
Copyright © 2020-2023  润新知