Thread,Runnable,Callable接口实现多线程的区别

629 阅读1分钟

1.继承Thread方式,每次new Thread 都是独立的。资源不共享,而Runnable资源共享。 2.实现Callable接口方式,只运行一次FutureTask

Thread类与Runnable接口实现多线程的区别 1.Thread类是Runnable接口的子类,使用runnable接口实现多线程可以避免单线程的局限。 2.Runnable接口实现多线程可以比Thread类实现的多线程更加清楚的描述数据的共享的概念。

解释: 因为一个线程只能启动一次,通过Thread实现线程时,线程和线程所要执行的任务时捆绑在一起的。也就使得一个任务只能启动一个线程,不同的线程执行的任务时不同的。所以没有必要,也不能让两个线程共享彼此任务中的资源。

通过Runnable方式实现的线程。实际开辟一个线程,将任务传递下去,由此线程执行。可以实例化多个Thread对象,将同一个任务传递进去也就是一个任务可以启动多个线程来执行它,这些线程执行的的是同一个任务,所以它们资源共享。

3.Callable 3.1最大的特点就是可以通过futureTask获得线程核心处理方式返回值(run方法无返回) 3.2get方法会阻塞主线程来等待任务完成。FutureTask非常适合于耗时的计算,主线程可以在完成自己的任务后,再去获取结果。 3.3FutureTask被多次调用,依次只会执行一次Runnable任务