方法1、继承Thread 类
public class Mythread extends Thread {
public Mythread() {
}
public Mythread(String name) {
super(name);
}
@Override
public void run(){
for (int i = 0; i<20; i++){
System.out.println(getName()+ ":" +i);
}
}
}
public class Thread1 {
public static void main(String[] args) {
/*
Mythread my1 = new Mythread();
Mythread my2 = new Mythread();
my1.setName("狼");
my2.setName("狗");
*/
Mythread my1 = new Mythread("狼");
Mythread my2 = new Mythread("狗");
my1.start();
my2.start();
System.out.println(Thread.currentThread().getName());//main
}
}
方法2、实现runnable接口
相比继承Thread 类,实现Runnable接口的好处:1.避免了Java单继承的局限性。2.适合多个相同程序的代码去处理同一个资源的情况,把线程和程序的代码、数据有效的分离,较好的提现了面向对象的设计思想
方法2,代码示例:
第一步,新建MyRunnable类实现Runnable接口
public class MyRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i<20; i++){
System.out.println("This thread is: " + Thread.currentThread().getName());
}
}
}
第二部,创建Thread类对象,把MyRunnable对象作为构造方法的参数,另一个参数命名为线程的名字
public class Thread2 {
public static void main(String[] args) {
MyRunnable my = new MyRunnable();
//创建Thread类对象,把MyRunnable对象作为构造方法的参数,另一个参数命名为线程的名字
Thread t1 = new Thread(my, "狗");
Thread t2 = new Thread(my,"狼");
t1.start();//线程狗执行 my 对应类里面的程序run方法
t2.start();//线程狼执行 my 对应类里面的程序run方法
}
}