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方法。

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

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

  • 相关阅读:
    从.NET到Mono-记Kooboo CMS对Mono的兼容历程:二、大小写敏感问题,到处都是地雷
    发布NBear.Mapping 开源通用映射组件 V1.0.1.8 beta
    发布支持代理,以及解决登录可能出现异常的DotMSN(强烈建议改用MSNPSharp来开发)
    LumaQQ.NET 2008 更新
    从.NET到Mono-记Kooboo CMS对Mono的兼容历程:三、平台的兼容性
    网站架构资料收集整理 Virus
    项目团队技术个人(提拔篇) Virus
    [翻译].NET框架中的缓存 Virus
    培养我们的目标感 Virus
    使用Django来处理对于静态文件的请求 Virus
  • 原文地址:https://www.cnblogs.com/mengxinrenyu/p/8095239.html
Copyright © 2011-2022 走看看