面向小白学习法面向小白学习法——Thread和和Runnable,扩展,扩展Callable!!
Thread和Runnable 的区别在面试当中是比较容易考的,自己又刚好在做这个的实验课题,于是乎,决定好好的学习这一部分
知识,并把我查过的资料,通过自己的理解,给大家整理出来。
目录目录
面向小白学习法——Thread和Runnable,扩展Callable!
Thread和Runnable的区别 (Callable扩展)
线程
Thread
Runnable
扩展——Callable
面向小白学习法面向小白学习法——Thread和和Runnable,扩展,扩展Callable!!
Thread和和Runnable的区别的区别 ((Callable扩展)扩展)
在面试当中,面试官特别喜欢问:“开启线程的两种方式,Thread 和 Runnable有什么区别?”。然后很多人可能看了许多博
客,大致的内容是这样的(Callable不常用,但我依然为大家扩展了出来)——
Java实现多线程的方法有三种,分别是继承thread类,实现Runnable接口,实现实现callable接口(call()方法有返回
值,run()方法无返回值)。接下来对它们进行比较——
Thread::
继承Thread类;
重写run方法,并且没有返回值(run()方法无返回值);
每次new Thread都是独立的,资源不共享;
Runnable::
实现Runnable接口;
重写run方法并且没有返回值(run()方法无返回值);
资源共享,比Thread类更加灵活,无单继承的限制;
Callable:
实现Callable接口;
使用call()方法,并且有返回值(call()方法有返回值);
可以抛出受检查的异常,比如ClassNotFoundException(call()方法可以);
如果想回答是上面内容的话,那么恭喜你,你其实并不太了解Runnable和Thread!看完这篇文章,你或许就明白了。
线程线程
线程的引入:
线程,在网络或多用户环境下,一个服务器通常需要接收大量且不确定数量用户的并发请求,为每一个请求都创建一个进程显
然是行不通的,——无论是从系统资源开销方面或是响应用户请求的效率方面来看。因此,操作系统中线程的概念便被引进
了。
使用的范围:
1.服务器中的文件管理或通信控制
2.前后台处理
3.异步处理
多线程
线程是一个进程中的执行场景。一个进程可以启动多个线程
多线程作用不是为了提高执行速度,而是提高应用程序的使用率
线程和线程共享“堆内存和方法区内存”,栈内存是独立的,一个线程一个栈