黑马程序员技术交流社区
标题:
Java多线程
[打印本页]
作者:
chengaq0
时间:
2015-12-16 23:21
标题:
Java多线程
1.什么是多线程?
答:
[size=13.9099998474121px] 一个程序就是一个进程,一个进程包含1个或多个线程,多线程是为了使得多个线程并行或并发的工作以完成多项任务,以提高系统的 效率。
2.并行和并发又有什么区别呢?
[size=13.9099998474121px] 答:
[size=13.9099998474121px]并
[size=13.9099998474121px]行就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行。(需要多核CPU)
[size=13.9099998474121px] 并发是指两个任务都请求运行,而处理器只能按受一个任务,就把这两个任务安排轮流进行,由于时间间隔较短,使人感觉两个任务都在运 行。
3.在java中多线程是如何实现的呢?
答:a.继承Thread
b.实现Runnable
通过代码的方式来了解这两个线程
继承Thread
实现Runnable
4.Runnable和Thread的区别?
答:a.查看源码: 继承Thread 由于子类重写了Thread的run方法,当调用start()时,看的是子类的run()方法
实现Runnable 实现类重写了run方法,构造函数中传递了该实现类的引用,该引用给了成员变量target,
线程调用start()方法时,会查看target是否是null,不为null编译的时候看的是左边的类Runnable中
的run方法,运行时看的是右边子类的run方法
b.两者都有哪些好处和弊端
继承Thread好处:可以直接用Thread类中的方法,代码简单
弊端:如果类有其他父类,就不能继承Thread
实现Runnable好处:因为是接口可以多实现,跟继承无关
弊端:不能直接使用Thread类的方法,需要创建Thread对象,代码复杂
5.如何通过匿名内部类创建线程?
6.什么是线程同步?为什么要同步?
答:用synchronized修饰的方法或代码块就叫同步方法或同步代码块。
当多线程并发, 有多段代码同时执行时, 我们希望某一段代码执行的过程中CPU不要切换到其他线程工作. 这时就需要同步.
7.多线程sleep()和wait()的区别?
[size=13.9099998474121px] 答:sleep(毫秒值) 是让当前线程睡多少毫秒后继续运行,如果是线程同步的,并不会释放锁
[size=13.9099998474121px] wait(可以加毫秒值)意思是让当前线程过多少毫秒后进入等待状态,并释放锁
[size=13.9099998474121px]
8.什么是守护线程?
答:就是将线程通过setDaemon(true)方法将线程设置为守护线程,其他非守护线程结束的时候,守护线程随之结束。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2