1.線程的四種創建方式:
1.繼承Thread類創建線程。
2.實現Runnable接口創建線程。
3.使用Callable和Future創建線程。
4.使用線程池。如:Executor框架
2.四種創建線程的實例
方式1:
public class Main {
public static void main(String[] args) {
new MyThread().start();
}
}
class MyThread extends Thread{
@Override
public void run() {
super.run();
System.out.println("戒急、戒躁!");
}
}
方式2:
public class Main1 {
public static void main(String[] args) {
new Thread(new MyThread1()).start();
}
}
class MyThread1 implements Runnable{
@Override
public void run() {
System.out.println("戒急、戒躁!");
}
}
方式3:
public class CallableThreadTest implements Callable<Integer> {
public static void main(String[] args) {
CallableThreadTest ctt=new CallableThreadTest();
FutureTask<Integer> ft=new FutureTask<Integer>(ctt);
for (int i=0;i<100;i++){
System.out.println(Thread.currentThread().getName()+"的循環變量i的值"+i);
if (i==20){
new Thread(ft,"有返回值的線程").start();
}
}
try {
System.out.println("子線程的返回值:"+ft.get());
}catch (InterruptedException e){
e.printStackTrace();
}catch (ExecutionException e){
e.printStackTrace();
}
}
@Override
public Integer call() throws Exception {
int i=0;
for (;i<100;i++){
System.out.println(Thread.currentThread().getName()+"==="+i);
}
return i;
}
}
方式4:
public class ThreadPool {
private static int POOL_NUM=10;
public static void main(String[] args) {
ExecutorService executorService=Executors.newFixedThreadPool(5);
for (int i=0;i<POOL_NUM;i++){
RunnableThread thread=new RunnableThread();
executorService.execute(thread);
}
}
}
class RunnableThread implements Runnable{
private int THREAD_NUM=10;
@Override
public void run() {
for (int i=0;i<THREAD_NUM;i++){
System.out.println("線程"+Thread.currentThread()+" "+i);
}
}
}