一.线程的概念
二. 线程的创建
线程的创建有三种方式,分别是 实现runable接口,继承Thread,和实现callab的写法,三者的区别分别是:实现runnable接口和继承thread都不能传入参数,只能在继承或者实现的类里面添加成员变量,实现callable接口的call方法允许函数有返回,如下文:
public static class MyThread implements Runnable { @Override public void run() { System.out.println("实现runnable接口"); } } public static class MyThread2 extends Thread{ @Override public void run(){ System.out.println("继承Thread"); } } public static class MyThread3 implements Callable<String> { private String name; private String age; @Override public String call() throws Exception { System.out.println("实现callable接口"); return "名称:"+name+" 年龄:"+age; } public MyThread3(String name, String age) { this.name = name; this.age = age; } }
public static void main(String[] args) throws ExecutionException, InterruptedException { // MyThread mt=new MyThread(); // mt.run(); // MyThread2 mt2=new MyThread2(); // mt2.start(); //FutureTask<String> task=new FutureTask<String>(new MyThread3("梨花","30")); //FutureTask<String> task2=new FutureTask<String>(new MyThread3("小明","3")); // new Thread(task).start(); // new Thread(task2).start(); // System.out.println(task.get()); // System.out.println(task2.get()); MyThread3 t1=new MyThread3("梨花","30"); MyThread3 t2=new MyThread3("小明","3"); // 多线程的执行方式 ExecutorService executorService = Executors.newFixedThreadPool(3); Future<String> submit = executorService.submit(t1); Future<String> submit1 = executorService.submit(t2); System.out.println(submit.get()); System.out.println(submit1.get()); executorService.shutdown(); }