当前位置 > 主页 > 万和大讲堂 >


Java线程的实现方式 南京Java培训

2016-03-21 10:30

  多线程一直给大家一种很难的感觉,其实接触了解之后你会发现,没有大家想的那么深奥,接下来我会分享我学习多线程的经历给大家,下面先简单的介绍下实现线程的三种方式:南京Java培训

 

  1、继承Thread

 

  (1)定义Thread类的子类,并重写该类的run方法,该方法的方法体就代表了线程需要完成的任务。可以把run方法称为线程执行体。

 

  (2)创建Thread子类的实例,即创建了线程对象。

 

  (3)调用线程对象的start方法来启动线程。

 

  package com.xiaomo.thread;南京Java培训

 

  public class ExtendThread extends Thread {

 

  private int i;

 

  public void run() {

 

  // 当线程继承Thread类时,直接使用this即可获取当前线程

 

  // Thread对象的getName()返回当前线程的名字

 

  // 因此可以直接调用getName()方法返回当前线程的名字

 

  for (; i < 100; i++) { 南京Java软件培训

 

  System.out.println(this.getName() + " " + i); 南京Java培训

 

  }

 

  }

 

  public static void main(String[] args) {

 

  for (int i = 0; i < 100; i++) {

 

  // 调用Thread的currentThread()方法获取当前线程  南京Java培训

 

  System.out.println(Thread.currentThread()。getName() + " " + i);

 

  if (i == 20) {

 

  // 创建并启动第一个线程

 

  new ExtendThread()。start();

 

  // 创建并启动第二个线程

 

  new ExtendThread()。start();

 

  }

 

  }

 

  }

 

  }

 

  结果:

 

  main 0

 

  main 1

 

  .

 

  .

 

  main 19

 

  main 20

 

  Thread-0 0

 

  Thread-0 1

 

  .

 

  .

 

  Thread-0 21

 

  Thread-0 22

 

  .

 

  .

 

  Thread-1 98

 

  Thread-1 99 南京Java培训

 

  继承Thread类的实现类不共享实例属性。

 

  2、实现Runnable

 

  (1)定义Runnable接口的实现类,并重写该接口的run方法,该方法的方法体就是该线程的线程执行体。

 

  (2)创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。南京Java培训

 

  (3)调用线程对象的start方法来启动该线程。

 

  package com.xiaomo.thread;

 

  public class ImplRunnable implements Runnable {

 

  private int i;

 

  public static void main(String[] args) {

 

  for (int i = 0; i < 100; i++){

 

  System.out.println(Thread.currentThread()。getName()+" "+i);

 

  if(i == 20){

 

  ImplRunnable ir = new ImplRunnable();

 

  new Thread(ir,"线程一")。start();

 

  new Thread(ir,"线程二")。start();

 

  }

 

  }

 

  }

 

  @Override

 

  public void run() {

 

  for (; i < 100; i++) {

 

  // 当线程实现Runnable接口时

 

  // 如果想获得当前线程,只能用Thread.currentThread()方法  南京Java培训

 

  System.out.println(Thread.currentThread()。getName() + " " + i);

 

  }

 

  }

 

  }

 

  结果:

 

  main 0

 

  main 1

 

  main 2

 

  .

 

  .

 

  .

 

  main 19

 

  main 20

 

  线程一 0

 

  线程一 1

 

  .

 

  .

 

  .

 

  线程一 70

 

  线程二 72

 

  main 46

 

  线程二 74

 

  线程一 73

 

  线程二 75

 

  .

 

  .

 

  .

 

  线程一 79

 

  main 98

 

  main 99


最近开班 more>
  • Web前端开发
  • 软件测试
  • 软件测试预科班
  • AI大模型+全栈开发开班
  • 云原生精英班
  • 云网预科班
  • 开发课程基础班第三期
  • 开发课程基础班第二期
  • 开发课程基础班第五期
  • Java全栈
  • CISP
  • HCIP-cloud
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • OCP 19C
  • RHCA
  • 6月9日
  • 5月21日
  • 5月14日
  • 6月9日
  • 5月7日
  • 5月26日
  • 5月19日
  • 5月12日
  • 6月3日
  • 6月9日
  • 随时开课
  • 7月12日
  • 5月19日
  • 5月19日
  • 5月7日
  • 5月10日
  • 5月24日
  • 5月24日
  • 随时开课
  • 随时开课
    • 姓 名 :
    • 电 话 :
    • 课 程 :

技术交流群

  • Java大数据交流群560819979加入
  • Python技术交流群595083299加入
  • Oracle技术交流群595119011加入
  • Web前端技术交流群604697610加入
  • Huawei技术交流群482919361加入
  • Redhat技术交流群587875348加入
  • UI设计技术交流群511649801加入
  • Cisco技术交流群596886705加入
  • IT运维技术交流群605888381加入