如何开发自己的线程类

当我们在做java开发的时候,经常需要自己编写一个线程类来实现自己的逻辑,我们知道实现线程有两种方式:

1. 类继承Thread类,重载run方法即可

2.继承Runnable接口,实现run方法

 

当我们用第一种方法实现自己的线程的时候,我们新写的线程类就不可以继承其他的类了,这是由于java中的线程是单继承的关系导致的。如果我们在编写自己线程类的时候,同时还想我们这个线程类继承别的类,那么可以采用第2种方法,因为第2中方法是实现接口,所以还可以继承其他类。下面编写了2个类,MyThreadExtendsThread继承Thread;MyThreadImplementsRun 实现Runnable接口,这两个类都是ThreadTest 的静态内部类。具体代码如下:

 

package com.test.thread;

/**
 * 测试线程的相关代码
 *
 * @author rey
 *
 */
public class ThreadTest {

 /**
  * @param args
  * @throws InterruptedException
  */
 public static void main(String[] args) throws InterruptedException {
  testExtendThread();
 }

 /**
  * 测试继承Thread类的线程
  *
  * @throws InterruptedException
  */
 private static void testExtendThread() throws InterruptedException {
  // 1.继承Thread类的线程
  MyThreadExtendsThread myThread = new MyThreadExtendsThread(1);
  myThread.run(); // 当前线程[1]::com.test.thread.ThreadTest$MyThreadExtendsThread

  // 2.继承runnable的线程
  MyThreadImplementsRun myThreadRun = new MyThreadImplementsRun(2);
  myThreadRun.run();// runnable接口的线程[Id=2]:::com.test.thread.ThreadTest$MyThreadImplementsRun

 }

 /**
  * 继承Thead实现线程
  *
  * @author rey
  *
  */
 private final static class MyThreadExtendsThread extends Thread {

  private int m_nThreadId;

  public MyThreadExtendsThread() {
   super();
  }

  public MyThreadExtendsThread(int _threadId) {
   super();
   m_nThreadId = _threadId;
  }

  public String toString() {
   return "当前线程Id:::" + this.m_nThreadId;
  }

  /*
   * (non-Javadoc)
   *
   * @see java.lang.Thread#run()
   */
  public void run() {
   System.out.println("当前线程[" + this.m_nThreadId + "]::"
     + this.getClass().getName());
  }
 }

 /**
  * 继承runnable接口,实现线程
  *
  * @author rey
  *
  */
 private final static class MyThreadImplementsRun implements Runnable {

  private int m_nThreadId;

  public MyThreadImplementsRun(int _threadId) {
   super();
   m_nThreadId = _threadId;
  }

  public String toString() {
   return "当前线程Id:::" + this.m_nThreadId;
  }

  @Override
  public void run() {
   System.out.println("runnable接口的线程[Id=" + this.m_nThreadId + "]:::"
     + this.getClass().getName());

  }

 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值