线程创建

编写线程运行时执行的代码有几种方式:

  • 创建Thread子类的一个实例并重写run方法
  • 创建实现了Runnable接口的类,传递给Thread类
  • lambda表达式
  1. 创建Thread的子类

     public class MyThread extends Thread {
         public void run() {
         	System.out.println("Hello new thread");
         }
     }
    

    可以通过下述方式创建上面的一个线程执行:

     Mythread myThread = new MyThread();
     myThread.start();
    

    start()方法调用后会启动一个新的线程,父线程返回继续执行,子线程中执行上面定义的run()函数

  2. 实现runnable接口

    新建一个实现了Runnable接口的实例对象,作为Thread类构造函数的入参:

     Runnable myRunnable = new Runnable() {
         public void run() {
     	    System.out.println("Hello Runnable");
         }
     }
     Thread thread = new Thread(myRunnable);
     thread.start();
    

    更常用的是直接使用匿名内部类启动一个线程

     new Thread(new Runnable() {
         [@override](https://my.oschina.net/u/1162528)
         public void run() {
     	    System.out.println("Hello new thread");
         }
     }).start();
    
  3. Java1.8之后可以使用lambda表达式简化一下操作

     new Thread( () -> System.our.println("Hello Lambda")).start();
    
  4. 使用Executor管理Thread对象

    经常会使用单个的Executor来创建和管理系统中所有的任务,对shutdown()方法的调用可以防止新任务被提交给这个Executor。

     public class CachedThreadPool {
         public static void main(String[] args) {
     	    ExecutorService exec = Executors.newCachedThreadPool();
     	    for (int i = 0; i < 5; i++)
     		    exec.execute(new Runnable() {
     		    	  [@override](https://my.oschina.net/u/1162528)
     			    public void run() {
     			    System.out.println("")
     			}
     		};
     	exec.shutdown();
     }
    

    }

猜你喜欢

转载自my.oschina.net/u/2561528/blog/1802687