标签:顺序 execution ice run方法 处理 lips test turn UNC
创建线程的三种方式
1.继承java.lang.Thread
public class Thread01 extends Thread{//继承Thread类 @Override public void run() {//重写Thread的run()方法 System.out.println("do something!"); } }
public class ThreadMain { public static void main(String[] args) { Thread01 t1 = new Thread01(); t1.start();//使用Thread的start方法新建线程 } }
start()_方法和run方法的区别:
1>.start是类Thread的一个方法
2>.run是接口Runnable的一个抽象方法,使用它需要实现
3>.start是新建一个线程,run不会新建线程,它是顺序执行的
2.实现java.lang.Runnable接口
public class RunnableImpl implements Runnable{//实现Runnable接口 public void run() {//实现Runnable中的run()方法 System.out.println("do something 2."); } }
public class RunnableMain { public static void main(String[] args) { RunnableImpl r = new RunnableImpl(); Thread t = new Thread(r); t.start();//启动 } }
Thread类和Runable接口的区别:
1>.类和接口的区别,单继承和实现接口,接口可扩展性强
2>.Runnable可以处理同一共享资源
3>.实现Runnable接口的类可以放入线程池中
3.实现java.util.concurrent.Callable接口
public class CallableImpl implements Callable{//实现Callable接口 public Object call() throws Exception {//实现Callable接口的call()方法 String hi = "你好"; return hi;//有返回值 } }
import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class CallableMain { @SuppressWarnings("unchecked") public static void main(String[] args) { Callable c = new CallableImpl();//产生结果 //创建线程池对象 ExecutorService pool = Executors.newSingleThreadExecutor(); Future future = pool.submit(c);//拿到结果 try { Object returnMsg = future.get();//get()获取返回结果 System.out.println(returnMsg.toString()); //你好 } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } }
Callable接口的优势:
1.有返回接口
2.有Future对象,操作更方便
3.可以抛异常
标签:顺序 execution ice run方法 处理 lips test turn UNC
原文地址:https://www.cnblogs.com/zzlcome/p/11082121.html