多线程,面试经常问到的一个问题。下面就谈谈多线程相关的问题。
1.什么导致了多线程问题?
可变的共享变量。比如在java内存模型中,堆中的变量是各个java栈共享的,堆中有一个变量a,栈A,栈B同时对a进行操作 ,就会导致刚才提到的问题。怎么解决呢?下文解释。
2.线程实现有几种方式
(jdk1.5之前)两种,一种继承Thread类,一种实现Runnable接口。
jdk1.5之后增加了一种实现方式,实现Callable接口。与Runnable接口不同的是它可以有返回值。
多线程,面试经常问到的一个问题。下面就谈谈多线程相关的问题。
1.什么导致了多线程问题?
可变的共享变量。比如在java内存模型中,堆中的变量是各个java栈共享的,堆中有一个变量a,栈A,栈B同时对a进行操作 ,就会导致刚才提到的问题。怎么解决呢?下文解释。
2.线程实现有几种方式
(jdk1.5之前)两种,一种继承Thread类,一种实现Runnable接口。
jdk1.5之后增加了一种实现方式,实现Callable接口。与Runnable接口不同的是它可以有返回值。