目录
8.java多线程中调用wait()和sleep()方法有什么不同
1.什么是线程?
-
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。程序猿可以通过它进行多处理器编程。你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,name用是十个线程完成该任务只需要十毫秒
2.线程和进程有什么区别?
-
线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务,不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间,每个线程都拥有单独的栈内存用来存储本地数据。
3.如何在java中实现线程
-
一种是继承Thread类
-
另一种就是实现Runnable接口
-
最后一种就是实现Callable接口
-
(第四种也是实现callable接口,只不过有返回值而已)
4.什么是线程安全?Vector是一个线程安全类吗?
-
如果你的代码所在的进程中有多个线程在同时运行。而这些线程可能会同时运行这端代码。如果每次运行结果和单线程运行的结果是一样的。而且其他的变量的值也和预期的是一样的。就是线程安全的。一个线程安全的计数器类的同一个实例对象在被多个线程使用的情况下也不会出现计算失误。很显然你可以将集合分类分成两组。线程安全和非线程安全。Vector是用同步方法来实现线程安全的,而和它相似的ArrayList不是线程安全的
5.什么是线程池?为什么要使用它
-
创建线程要花费昂贵的资源和时间。如果任务来了才创建线程name响应时间会变长,而且一个进程能创建的线程数有限。
-
为了避免这些问题,在程序启动的时候就会创建若干线程来响应处理,他们被称为线程池。里面的线程叫做工作线程
-
从JDK1.5开始Java API 提供了 Executor框架让你可以创建不同的线程池。比如单线程池,每次处理一个任务,树木固定的线程池或者是缓存线程池(一个适合很多生存周期短的任务的程序的可扩展线程池)
6.启动一个线程用run还是start
-
启动一个线程是调用start()方法,使线程进入就绪状态,以后可以被调度为运行状态,一个线程必须关联一些具体的执行代码,run()方法是该线程所关联的执行代码。
7.有三个线程T1,T2,T3,怎么确保他们按顺序执行?
-
在多线程中有多种方法让线程按特定顺序执行,你可以用线程类的join()方法在一个线程中启动另一个线程,另一个线程完成该线程继续执行。为了确保三个县城的顺序你应该先启动最后一个(T3调用T2,T2调用T1),这样T1就会先完成而T3最后完成
8.java多线程中调用wait()和sleep()方法有什么不同
-
Java程序中wait和sleep都会造成某种形式的暂停,他们可以满足不同的需要。wait()方法用于线程见通信,如果等待条件为真且其它线程被唤醒时它会释放锁,而sleep()方法仅仅释放CPU资源或者让当前线程停止一段时间,但是不会释放锁
9.什么地方用了多线程
-
我们做的项目几乎没有用到多线程,因为havaweb 方面开发的话几乎用不到多线程! 有多线程的地方servlet容器或者其它开发框架都已经实现掉了!
10.Excutors可以产生哪些线程池
-
Java里面线程池的顶级接口是Executor,但是严格意义上将Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。ThreadPoolExecutor是Excutors类的底层实现
11.如何暂停一条线程
-
两种方式暂停一条线程,一个是采取Thread类的sleep()方法,一个是在同步代码中使用wait()方法