继承Thread类
package com.yuzhenc.thread;
public class Test01 {
public static void main(String[] args) {
TestThread testThread = new TestThread();
testThread.start();
for (int i = 0; i < 10; i++) {
System.out.println("main2:"+i);
}
}
}
class TestThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
}
}
实现Runnable接口
package com.yuzhenc.thread;
public class Test02 {
public static void main(String[] args) {
TestThread1 t = new TestThread1();
Thread thread1 = new Thread(t,"窗口1");
thread1.start();
Thread thread2 = new Thread(t,"窗口2");
thread2.start();
Thread thread3 = new Thread(t,"窗口3");
thread3.start();
}
}
class TestThread1 implements Runnable {
int ticketNum = 10;
@Override
public void run() {
for (int i = 0; i < 100; i++) {
if (ticketNum > 0) {
System.out.println("我在"+Thread.currentThread().getName()+"买到了第"+ticketNum--+"张票");
}
}
}
}
实现Callable接口
package com.yuzhenc.thread;
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class Test03 {
public static void main(String[] args) throws ExecutionException, InterruptedException {
TestThread3 testThread3 = new TestThread3();
FutureTask futureTask = new FutureTask(testThread3);
Thread thread = new Thread(futureTask);
thread.start();
Integer integer = (Integer) futureTask.get();
System.out.println(integer);
}
}
class TestThread3 implements Callable<Integer> {
@Override
public Integer call() throws Exception {
return new Random().nextInt(10);
}
}
线程生命周期