线程的实现

1.在java中,线程的实现由2种

(1).继承Thread类

(2).实现Runnable接口

2.Thread类

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

定义格式:

class className extends Thread{

  run(){}

}

3,Runnable接口

定义格式:

class RunnableName implements Runnable{

  run(){}

4.Thread类项目结构

(1).

 (2).MyThread.java

package thread;

public class MyThread extends Thread{
private String name;

//构造方法传递一个参数来标识我当前是哪一个线程
public MyThread(String name) {
this.name=name;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(name +":"+i);
}
}
}

(3).ThreadDemo.java

package thread;

public class ThreadDemo {

public static void main(String[] args) {
//创建两个线程实现线程的并发机制
MyThread a=new MyThread("A");
MyThread b=new MyThread("B");
a.run();
b.run();
}
}

启动项目截图:

 线程应该是并行执行的,说明启动线程不应该是run()方法

调用start()方法启动线程

package thread;

public class ThreadDemo {

public static void main(String[] args) {
MyThread a=new MyThread("A");
MyThread b=new MyThread("B");
//a.run();
//b.run();
a.start();
b.start();
}
}

 调用start()方法说明线程并行执行

5.Runnable接口项目结构
(1)

 (2).MyRunnable.java

package thread;

import org.omg.CORBA.StringHolder;

public class MyRunnable implements Runnable{
private String name;

//构造方法,用来判断是哪个线程在执行
public MyRunnable(String name) {
this.name=name;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(name+":"+i);
}
}
}


(3).TestDemo.java

package thread;

public class ThreadDemo {

public static void main(String[] args) {
MyRunnable r1=new MyRunnable("A");
MyRunnable r2=new MyRunnable("B");
//因为Runnable接口不存在statrt()启动方法,所以需要新建一个线程
//通过Thread启动
Thread t1=new Thread(r1);
Thread t2=new Thread(r2);
t1.start();
t2.start();
}
}
(4).启动项目截图

 说明线程并行执行

原文地址:https://www.cnblogs.com/curedfisher/p/11974561.html