线程创建2种方式,一是继承Thread
类,一是实现Runnable
接口。这里介绍了这2中方式,同时展现了创建线程时,传入参数的2种方式:set
方法和构造函数。
方法1-继承Thread
类
package com.test;
import java.util.Date;
import lombok.Setter;
public class ThreadTest1 {
public static void main(String[] args) {
String str = "test";
Date d = new Date();
MyThread t = new MyThread(str, d);
t.setId(100);
// 启动新线程
t.start();
}
}
class MyThread extends Thread {
private String str;
private Date d;
public MyThread(String str, Date d) {
this.str = str;
this.d = d;
}
@Setter
private Integer id;
@Override
public void run() {
System.out.println(str);
System.out.println(d);
System.out.println(id);
}
}
方法2-实现Runnable
接口
因'start()'方法是Thread
类的,所以这个不能直接调用,要用线程类去调用。
package com.test;
import java.util.Date;
import lombok.Setter;
public class ThreadTest2 {
public static void main(String[] args) {
String str = "test2";
Date d = new Date();
TestThread t = new TestThread(str, d);
t.setId(200);
// 启动新线程
new Thread(t).start();
}
}
class TestThread implements Runnable {
private String str;
private Date d;
public TestThread(String str, Date d) {
this.str = str;
this.d = d;
}
@Setter
private Integer id;
@Override
public void run() {
System.out.println(str);
System.out.println(d);
System.out.println(id);
}
}
实现Runnable接口比继承Thread类所具有的优势:
- 适合多个相同的程序代码的线程去处理同一个资源
- 可以避免java中的单继承的限制
- 增加程序的健壮性,代码可以被多个线程共享,代码和数据独立
- 线程池只能放入实现
Runable
或Callable
类线程,不能直接放入继承Thread
的类
网友评论