zoukankan      html  css  js  c++  java
  • java多线程的使用

    实现Java多线程的两种方式:

      一:是实现runnable接口

     1 class ThreadTest implements Runnable{
     2   private int tickets = 100;
     3   public void run(){
     4      while(true){
     5      if(tickets > 0){
     6        System.out.println(Thread.currentThread().getName() +
     7           " is saling ticket " + tickets--);
     8       }
     9     }
    10   }
    11 }
    1 public class ThreadDemo1{
    2   public static void main(String[] args){
    3    ThreadTest t = new ThreadTest();
    4      new Thread(t).start();
    5      new Thread(t).start();
    6      new Thread(t).start();
    7      new Thread(t).start();
    8   }
    9 }

      四个线程同时执行同一资源

      二:是继承Thread,重写run方法

     1 class ThreadTest extends Thread{
     2   private int ticket = 100;
     3   public void run(){
     4       while(true){
     5       if(ticket > 0){
     6       System.out.println(Thread.currentThread().getName() +
     7           " is saling ticket" + ticket--);
     8       }else{
     9          break;
    10       }
    11     }
    12   }
    13 }
    1 public class ThreadDemo1{
    2   public static void main(String[] args){
    3     new ThreadTest().start();
    4     new ThreadTest().start();
    5     new ThreadTest().start();
    6     new ThreadTest().start();
    7  }
    8 }

    四个线程分别执行同一资源,每个都执行100次。

    两种实现的区别是:

    可见,实现Runnable接口相对于继承Thread类来说,有如下显著的好处:

    (1)适合多个相同程序代码的线程去处理同一资源的情况,把虚拟CPU(线程)同程序的代码,数据有效的分离,较好地体现了面向对象的设计思想。

    (2)可以避免由于Java的单继承特性带来的局限。我们经常碰到这样一种情况,即当我们要将已经继承了某一个类的子类放入多线程中,由于一个类不能同时有两个父类,所以不能用继承Thread类的方式,那么,这个类就只能采用实现Runnable接口的方式了。

    (3)有利于程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。当多个线程的执行代码来自同一个类的实例时,即称它们共享相同的代码。 多个线程操作相同的数据,与它们的代码无关。当共享访问相同的对象是,即它们共享相同的数据。当线程被构造时,需要的代码和数据通过一个对象作为构造函数 实参传递进去,这个对象就是一个实现了Runnable接口的类的实例

    开启打怪升级之旅
  • 相关阅读:
    jquery将日期转换成指定格式的字符串
    jquery双日历日期选择器bootstrap-daterangepicker日历插件
    JAVA实体类不要使用基本类型,基本类型包含byte、int、short、long、float、double、char、boolean
    S04_CH01_搭建工程移植LINUX/测试EMMC/VGA
    S03_CH13_ZYNQ A9 TCP UART双核AMP例程
    S03_CH12_基于UDP的QSPI Flash bin文件网络烧写
    S03_CH11_基于TCP的QSPI Flash bin文件网络烧写
    S03_CH10_DMA_4_Video_Stitch视频拼接系统
    S03_CH09_DMA_4_Video_Switch视频切换系统
    S03_CH08_DMA_LWIP以太网传输
  • 原文地址:https://www.cnblogs.com/zhangliwei/p/9151360.html
Copyright © 2011-2022 走看看