zoukankan      html  css  js  c++  java
  • 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方法。

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

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

  • 相关阅读:
    composer 的安装以及一些插件的下载等
    linux 服务器安装php5.6
    数据库异地备份---服务器配置流程
    expect安装
    linux 服务器安装mysql5.6
    使用navicat 使用IP、用户名、密码直接连接linux服务器里面的数据库
    函数指针 指针函数
    信号量
    消息队列-Message Queue
    生成库文件,会链接依赖的库文件吗?
  • 原文地址:https://www.cnblogs.com/mengxinrenyu/p/8095239.html
Copyright © 2011-2022 走看看