1.繼承Thread類創建線程
package com.practise.createthread; public class AnonymousThread { public static void main(String[] args) { new Thread("線程一") { public void run() { for(int i=1;i<=20;i++) { System.out.println(Thread.currentThread().getName()+":"+i); } } }.start(); Thread.currentThread().setName("主線程"); for(int i=1;i<=20;i++) { System.out.println(Thread.currentThread().getName()+":"+i); } } }
2.實現Runnable接口創建線程
package com.practise.createthread; public class AnonymousThread { public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { for(int i=1;i<=20;i++) { System.out.println(Thread.currentThread().getName()+":"+i); } } }, "線程二").start(); Thread.currentThread().setName("主線程"); for(int i=1;i<=20;i++) { System.out.println(Thread.currentThread().getName()+":"+i); } } }
3.使用Callable和Future創建線程
package com.practise.createthread; import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; public class AnonymousThread { public static void main(String[] args) { FutureTask<Integer> task=new FutureTask<Integer>(new Callable<Integer>() { @Override public Integer call() { Integer total = 0; try { for (int i = 1; i <= 50; i++) { total += i; } return total; } catch (Exception ex) { ex.printStackTrace(); } return null; } }); new Thread(task, "有返回值的線程").start(); try { System.out.println(task.get()); } catch (Exception ex) { ex.printStackTrace(); } Thread.currentThread().setName("主線程"); for (int i = 1; i <= 20; i++) { System.out.println(Thread.currentThread().getName() + ":" + i); } } }