并发多线程
-
多线程锁的升级原理是什么?
在Java中,锁共有4种状态,级别从低到高依次为:无状态锁,偏向锁,轻量级锁和重量级锁状态,这几个状态会随着竞争情况逐渐升级。锁可以升级但不能降级。
-
在 java 程序中怎么保证多线程的运行安全?
线程安全在三个方面体现: - 原子性:提供互斥访问,同一时刻只能有一个线程对数据进行操作,(atomic,synchronized); - 可见性:一个线程对主内存的修改可以及时地...
-
notify()和notifyAll()有什么区别?
- 如果线程调用了对象的 wait()方法,那么线程便会处于该对象的等待池中,等待池中的线程不会去竞争该对象的锁。 - 当有线程调用了对象的 notifyAll()方法(唤醒所有 ...
-
线程池返回值的接收
submit提交线程后,通过Future来接收,再通过.get()方法来获取 import java.util.concurrent.*; class MyThread imple...
-
线程的返回值如何获取?
通过实现Callable接口,FutureTask可以获取线程的返回值 import java.util.concurrent.Callable; import java.util...
-
守护线程有什么重要作用?
守护线程作用是当普通线程执行完毕,JVM剩余的都是守护线程时候,JVM就会自动退出,JVM 中的垃圾回收线程就是典型的守护线程。如果说不具备该特性,JVM 要退出时,由于垃圾回收线...
-
线程调度及优先级讲一下?
线程具有优先级,优先级高的线程会获得更高的执行机会(并不是一定会先执行) import java.util.concurrent.Callable; import java.uti...
-
实现 Runnable 接口和实现 Callable 接口的区别
1)Runnable 是自从 java1.1 就有了,而 Callable 是 1.5 之后才加上去的 2)实现 Callable 接口的任务线程能返回执行结果,而实现 Runna...
-
实现 Runnable 接口比继承 Thread 类优势?
1、适合多个相同的程序代码的线程去处理同一个资源 2、可以避免 java 中的单继承的限制 3、增加程序的健壮性,代码可以被多个线程共享,代码和数据独立 4、线程池只能放入实现 R...
-
sleep()和 wait()分别是哪个类的方法,有什么区别?
Sleep()属于 java.lang.Thread 类 Wait()属于 java.lang.Object 类 最主要是 sleep 方法没有释放锁,而 wait 方法释放了锁,...
-
sleep()和 yield()的区别
sleep 使当前线程进入停滞状态,所以执行 sleep()的线程在指定的时间内肯定不会被执行; yield()只是使当前线程重新回到可执行状态,所以执行 yield()的线程有可...
-
线程各个状态之间的转换?
RUNNING(运行):接受新任务并处理排队任务。 SHUTDOWN(关闭):不接受新任务,会处理队列任务。 STOP(停止):不接受新任务,不处理队列任务,并且中断进程中的任务。...
-
如果让你设计一个动态大小的线 程池,如何设计,应该有哪些方法?
线程池解决线程频繁创建和销毁资源浪费及性能问题 **线程池管理器**: 通过添加请求的方法(putRequest)向请求队列(RequestQueue)添加请求,这些请求事先需要实...
-
在多线程环境下,SimpleDateFormat 是线程安全的吗?
不安全,可以用joda-time 库。