【Java】多线程和创建线程的三种方法
多线程
多线程即是在在同一时间,系统可以做多件事情。
首先要理解进程(Processor)和线程(Thread)的区别:
进程:
是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。
线程:
是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。
创建线程的三种方法
Java多线程实现方式主要有三种: 继承Thread类; 实现Runnable接口; 实现Callable接口;
1.继承Thread类
Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。
public class MyThread extends Thread {
          
   
   public void run() {
          
   
       System.out.println("MyThread.run()");
          }
     }
	 MyThread myThread1 = new MyThread();
	 MyThread myThread2 = new MyThread(); 
	 myThread1.start(); 
	 myThread2.start(); 
2.实现Runnable接口
如果自己的类已经extends另一个类,就无法直接extends Thread,此时,可以实现一个Runnable接口。
public class MyThread extends OtherClass implements Runnable {
          
    
   public void run() {
          
    
    System.out.println("MyThread.run()"); 
   } 
} 
实例化一个Thread,并传入自己的MyThread实例。
MyThread myThread = new MyThread(); Thread thread = new Thread(myThread); thread.start();
3.实现Callable接口
Callable<V> oneCallable = new SomeCallable<V>();  
  //由Callable<Integer>创建一个FutureTask<Integer>对象:  
  FutureTask<V> oneTask = new FutureTask<V>(oneCallable);  
  //注释:FutureTask<Integer>是一个包装器,它通过接受Callable<Integer>来创建,它同时实现了Future和Runnable接口。
    //由FutureTask<Integer>创建一个Thread对象:  
  Thread oneThread = new Thread(oneTask);  
  oneThread.start();  
  //至此,一个线程就创建完成了。
				       
			          上一篇:
			            通过多线程提高代码的执行效率例子 
			          
			          
			        
