• Java通过继承thread类与实现Runnable接口实现多线程的区别


     Java中线程的创建有两种方式:

    1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中

    2.  通过实现Runnable接口,实例化Thread类

    一、通过继承Thread类实现多线程

    class MyThread extends Thread{
    	String name = null;
    	int ticket = 0;
    	public MyThread(String name){
    		this.name = name;
    	}
    	public synchronized void run(){
    		for (int i = 0; i < 5; i++) {
    			System.out.println(Thread.currentThread().getName()+this.name+" ticket:"+ticket++);
    			try {
    				Thread.sleep(100);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}			
    		}
    
    	}
    }

    通过如下方式运行:

    1     public static void main(String[] args) {
    2         
    3         MyThread mThread1 = new MyThread("线程一");
    4         MyThread mThread2 = new MyThread("线程二");
    5         MyThread mThread3 = new MyThread("线程三");
    6         mThread1.start();
    7         mThread2.start();
    8         mThread3.start();
    9     }    

    运行结果如下:

     1 Thread-1线程二 ticket:0
     2 Thread-0线程一 ticket:0
     3 Thread-2线程三 ticket:0
     4 Thread-1线程二 ticket:1
     5 Thread-0线程一 ticket:1
     6 Thread-2线程三 ticket:1
     7 Thread-1线程二 ticket:2
     8 Thread-2线程三 ticket:2
     9 Thread-0线程一 ticket:2
    10 Thread-1线程二 ticket:3
    11 Thread-2线程三 ticket:3
    12 Thread-0线程一 ticket:3
    13 Thread-1线程二 ticket:4
    14 Thread-2线程三 ticket:4
    15 Thread-0线程一 ticket:4

    二、通过继承Runnable接口实现多线程

    多线程类:

     1 class RunThread implements Runnable{
     2 
     3     int Counter = 0;
     4     @Override
     5     public synchronized void run() {
     6         for(int i=0;i<5;i++){
     7             System.out.println(Thread.currentThread().getName()+"count:"+Counter++);
     8             try {
     9                 Thread.sleep(100);
    10             } catch (InterruptedException e) {
    11                 // TODO Auto-generated catch block
    12                 e.printStackTrace();
    13             }            
    14         }
    15     }    
    16 }

    实现方式:

     1     public static void main(String[] args) {
     2         
     3         RunThread rThread = new RunThread();
     4         Thread t1 = new Thread(rThread,"线程一");
     5         Thread t2 = new Thread(rThread,"线程二");
     6         Thread t3 = new Thread(rThread,"线程三");
     7         t1.start();
     8         t2.start();
     9         t3.start();
    10   }

    输出结果:

     1 线程一count:0
     2 线程一count:1
     3 线程一count:2
     4 线程一count:3
     5 线程一count:4
     6 线程二count:5
     7 线程二count:6
     8 线程二count:7
     9 线程二count:8
    10 线程二count:9
    11 线程三count:10
    12 线程三count:11
    13 线程三count:12
    14 线程三count:13
    15 线程三count:14

      

  • 相关阅读:
    webpack小知识点
    什么叫做webpack模块
    vue插槽的使用
    如何使用在 React Router v4 中以编程的方式进行导航
    react小知识点集合
    vue小知识点
    react更好的实现操作
    HTTP 协议 Host 请求头的作用
    包管理工具安装问题
    对象的方法
  • 原文地址:https://www.cnblogs.com/centor/p/5738550.html
Copyright © 2020-2023  润新知