Fork me on GitHub

线程的实现

--------------siwuxie095

   

   

   

   

   

   

在Java中,线程的实现方式有 2 种:

   

(1)继承 Thread 类

   

2)实现 Runnable 接口

   

   

   

   

Thread 类:

   

Thread 类是在 java.lang 包中定义的,继承 Thread 类必须重写 run() 方法

   

   

定义格式:

   

class className extends Thread{

run(){}

}

   

   

   

   

Runnable 接口:

   

Runnable 接口是在 java.lang 包中定义的,实现 Runnable 接口必须重写 run() 方法

   

   

定义格式:

   

class className implements Runnable{

run(){}

}

   

   

   

   

   

示例:

   

工程结构目录如下:

   

   

   

   

MyThread.java

   

package com.siwuxie095.thread;

   

//MyThread是一个线程,继承自 Thread

public class MyThread extends Thread {

 

private String name;

 

//构造方法,传入参数 name,用于标识当前线程

public MyThread(String name) {

this.name=name;

}

 

//重写父类 Thread run() 方法

@Override

public void run() {

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

System.out.println(name+"-"+i);

 

}

super.run();

}

 

}

   

   

MyRunnable.java:

   

package com.siwuxie095.thread;

   

//MyRunnable 是一个线程,需要实现 Runnable 接口

public class MyRunnable implements Runnable {

 

private String name;

 

//构造方法,传入参数 name,用于标识当前线程

public MyRunnable(String name) {

this.name=name;

}

 

 

   

//复写接口中的抽象方法 run()

public void run() {

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

System.out.println(name+"-"+i);

}

}

   

}

   

   

ThreadDemo.java(主类):

   

package com.siwuxie095.thread;

   

public class ThreadDemo {

   

public static void main(String[] args) {

//实例化线程对象

MyThread t1=new MyThread("A");

MyThread t2=new MyThread("B");

 

//线程的启动是通过 start()方法,而不是 run() 方法

//注意:只有 Thread 才有 start()方法

//多线程是一种并发机制,谁抢到CPU资源谁就执行

t1.start();

t2.start();

 

 

MyRunnable r1=new MyRunnable("C");

MyRunnable r2=new MyRunnable("D");

//很明显,Runnable是一个接口,没有 start() 方法,

//(接口中只有全局常量和公共抽象方法,而 Runnable 接口中只有 run()抽象方法)

//

// Thread 有一个构造方法可以传入 Runnable 对象

//依然通过 Thread start() 方法启动 Runnable 的线程

Thread t3=new Thread(r1);

Thread t4=new Thread(r2);

t3.start();

t4.start();

 

}

   

}

   

   

   

运行一览:多线程的并发

   

   

   

   

   

   

   

   

【made by siwuxie095】

posted on 2017-03-27 15:39  siwuxie095  阅读(115)  评论(0编辑  收藏  举报

导航