Java并发编程之常用的多线程实现方式分析

  

本文实例讲述了Java并发编程之常用的多线程实现方式。分享给大家供大家参考,具体如下:

  

概述

  

常用的多线程实现方式有两种:

  

1。继承线程类

  

2。实现运行的接口

  

之所以说是常用的,是因为通过还可以通过JUC (java . util . concurrent)包中的线程池来实现多线程。关于线程池的内容,我们以后会详细介绍;现在,先对的线程和Runnable进行了解。

  

线程简介

  

线程是一个类.Thread本身就实现了Runnable接口。它的声明如下:

        公共类线程实现Runnable {}      之前      

线程的作用是实现多线程。

  

ThreadTest。

java源码         类MyThread扩展线程{   私人int票=10;   公共空间run () {   for (int i=0; i<20;我+ +){   如果(this.ticket> 0) {   System.out.println (this.getName() +”卖票:票”+ this.ticket——);   }   }   }   };   公开课ThreadTest {   公共静态void main (String [] args) {//启动3个线程t1、t2、t3;每个线程各卖10张票!   MyThread t1=new MyThread ();   MyThread t2=new MyThread ();   MyThread t3=new MyThread ();   t1.start ();   t2.start ();   t3.start ();   }   }      之前      

运行结果

  
  

Thread-0卖票:ticket10
  线程1卖票:ticket10
  线程2卖票:ticket10
  线程1卖票:ticket9
  Thread-0卖票:ticket9
  线程1卖票:ticket8
  线程2卖票:ticket9
  线程1卖票:ticket7
  Thread-0卖票:ticket8
  线程1卖票:ticket6
  线程2卖票:ticket8
  线程1卖票:ticket5
  Thread-0卖票:ticket7
  线程1卖票:ticket4
  线程2卖票:ticket7
  线程1卖票:ticket3
  Thread-0卖票:ticket6
  线程1卖票:ticket2
  线程2卖票:ticket6
  线程2卖票:ticket5
  线程2卖票:ticket4
  线程1卖票:ticket1
  Thread-0卖票:ticket5
  线程2卖票:ticket3
  Thread-0卖票:ticket4
  线程2卖票:ticket2
  Thread-0卖票:ticket3
  线程2卖票:ticket1
  Thread-0卖票:ticket2
  Thread-0卖票:ticket1

     

Runnable简介

  

可运行是一个函数式接口,该接口中只包含了一个运行()方法。它的定义如下:

        @FunctionalInterface   公共接口可运行{   公共抽象空运行();   }      之前      

可运行的作用,实现多线程。我们可以定义一个类一个实现运行的接口,然后,通过新线程(新())等方式新建线程。

  

RunnableTest。

java源码         类MyThread实现Runnable {   私人int票=10;   公共空间run () {   for (int i=0; i<20;我+ +){   如果(this.ticket> 0) {   System.out.println (Thread.currentThread () . getname() +”卖票:票”+ this.ticket——);   }   }   }   };   公开课RunnableTest {   公共静态void main (String [] args) {   MyThread太=new MyThread ();//启动3个线程t1、t2、t3(它们共用一个可运行的对象),这3个线程一共卖10张票!   线程t1=新线程(mt);   线程t2=新线程(mt);   线程t3=新线程(mt);   t1.start ();   t2.start ();   t3.start ();   }   }      之前      

运行结果

  
  

Thread-0卖票:ticket10
  线程2卖票:ticket8
  线程1卖票:ticket9
  线程2卖票:ticket6
  Thread-0卖票:ticket7
  线程2卖票:ticket4
  线程1卖票:ticket5
  线程2卖票:ticket2
  Thread-0卖票:ticket3
  线程1卖票:ticket1

     

线程和可运行的异同点

  

:都是“多线程的实现方式”。
  :
  线程是类,而运行的是接口,线程本身是实现了Runnable接口的类。我们知道“一个类只能有一个父类,但是却能实现多个接口”,因此可运行具有更好的扩展性。
  此外,可运行还可以用于“资源的共享”。即,多个线程都是基于某一个可运行的对象建立的,它们会共享Runnable对象上的资源。
  通常,建议通过“Runnable”实现多线程!

  

更多的java相关内容感兴趣的读者可查看本站专题:《java进程与线程操作技巧总结》,《java数据结构与算法教程》、《java操作DOM节点技巧总结》,《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总》

Java并发编程之常用的多线程实现方式分析