1、继承Thread类
package cn.skq.thread1;
class ThreadTest extends Thread{
@Override
public void run() {
System.out.println("我是一个小线程");
}
}
public class Test {
public static void main(String[] args) {
ThreadTest t = new ThreadTest();
t.start();
}
}
2、实现Runnable接口
package cn.skq.thread2;
class ThreadTrag implements Runnable {
@Override
public void run() {
System.out.println("我是一个小线程");
}
}
public class Test {
public static void main(String[] args) {
Thread t = new Thread(new ThreadTrag());
t.start();
}
}
3、匿名内部类
package cn.skq.thread3;
public class Test {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("我是一个小线程");
}
}).start();
}
}
4、实现Callable接口,带返回值的线程
package cn.skq.thread4;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
class ThreadTest implements Callable<Integer> {
@Override
public Integer call() throws Exception {
System.out.println("我是一个小线程");
return 1;
}
}
public class Test {
public static void main(String[] args) {
ThreadTest callable = new ThreadTest();
FutureTask<Integer> futureTask = new FutureTask<>(callable);
new Thread(futureTask).start();
try {
System.out.println("线程返回值为:" + futureTask.get());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
5、定时器实现多线程
package cn.skq.thread5;
import java.util.Timer;
import java.util.TimerTask;
public class Test {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("我是一个小线程");
}
}, 0, 1000);
}
}
6、线程池实现多线程
package cn.skq.thread6;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Test {
public static void main(String[] args) {
ExecutorService threadPool = Executors.newFixedThreadPool(10);
for (int i = 0; i < 10; i++) {
threadPool.execute(new Runnable() {
@Override
public void run() {
System.out.println("我是一个小线程");
}
});
}
threadPool.shutdown();
}
}
7、Lambda表达式创建线程
package cn.skq.thread7;
public class Test {
public static void main(String[] args) {
new Thread(()->System.out.println("我是一个小线程");).start();
}
}
8、spring创建线程