线程的概念
线程进程区别
在Java中如何实现线程
我们应该是使用Runnable还是Thread?
Thread类的start()和run()方法的区别
start()方法会创建新的线程并启动该线程,所以该方法会调用其他native方法,而run()方法就是:
正常的Java方法调用,即在原来的线程中执行java代码。
Java中Runnable和Callable的区别
Runnable和Callable都代表要线程中执行的任务。Runnable是JDK1.0加入的,而Callable确实是在JDK1.5加入的。
区别:Callable的 call() 方法可以返回值和抛出异常,
而Runnable的run()方法不能返回值也不能抛出异常。
Callable是需要使用java.util.concurrent.ExecutorService.submit(Callable<T>)方法提交的,这样就可以获得Future对象,该对象可以装载了Callable接口的call()方法的返回结果。
Java中CyclicBarrier和CountDownLatch的区别
简述Java内存模型
Java内存模型包含了一系列的规则和指导原则。
Java语言是跨平台的,Java的内存模型确保了Java在不同的操作系统、CPU、内存架构上有确定的行为,特别是在多线程的情况下,一个线程所做的变动对其他线程是否可见是很重要的,这叫做先行发生关系:
Java中的volatile变量有什么特点
线程安全的概念,Vector是否是线程安全类?
竞态条件的概念
Java停止线程的方法
线程发生异常的结果
如何在线程之间共享数据
共享对象(类的静态变量或类的实例变量)
也可以使用阻塞队列等并发的集合。
notify和notifyAll的区别
wait,notify和notifyAll是Object类的方法的原因
ThreadLocal变量含义(线程局部变量)