1. 继承Thread
Thread thread1 = new Thread(){
@Override
public void run() {
System.out.println("子线程"+new Date().getTime());
}
};
thread1.start();
System.out.println("结束!");
// 结束!
// 子线程1511245859986
2.实现Runnable接口
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("子线程:"+new Date().getTime());
}
};
new Thread(runnable).start();
System.out.println("结束!!!");
3. 实现Callable
public class MyCallable implements Callable<Long> {
@Override
public Long call() throws Exception {
Thread.sleep(2000);
return new Date().getTime();
}
}
public void test1(){
ExecutorService pool = Executors.newFixedThreadPool(15);
List<Future<Long>> results = new ArrayList<Future<Long>>();
MyCallable myCallable = new MyCallable();
for(int i=0;i<12;i++ ){
results.add(pool.submit(myCallable));
}
pool.shutdown();
for(Future future:results){
try {
Long times = (Long) future.get();
Date date = new Date(times);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(" "+ simpleDateFormat.format(date));
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
1)