摘要:
面试场景: 面试官第一问: 请问,我现在编写一个类,类全名如下:java.lang.String,我们知道JDK也给我们听过了一个java.lang.String,那么,我们编写的这个String类能否替换到JDK默认提供,也就是说程序实际运行的时候,会加载我们的String还是JDK的String 阅读全文
摘要:
ThreadLocal解决了什么问题?内部源码是怎么样的? 作用: 为每个线程创建一个副本 实现在线程的上下文传递同一个对象,比如connection 第一个问题:证明ThreadLocal为每个线程创建一个变量副本 public class ThreadLocalTest { private st 阅读全文
摘要:
如果这个是面试官直接问你的问题,你会怎么回答? 一个专业的描述是,当多个线程访问一个对象时,如果不用进行额外的同步控制或其他的协调操作,调用这个对象的行为都可以获得正确的结果,我们就说这个对象是线程安全的 那么我们如何做到线程安全? 实现线程安全的方式有多种,其中在源码中常见的方式是,采用synch 阅读全文
摘要:
1,JDK通过接口ExecutorService来表示线程池,通过工具类Executors来创建多种线程池对象 2,各种线程池的特点如下: newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优 阅读全文
摘要:
1,所属的类不同: sleep方法是定义在Thread上wait方法是定义在Object上 2,对于锁资源的处理方式不同 sleep不会释放锁wait会释放锁 3,使用范围: sleep可以使用在任何代码块wait必须在同步方法或同步代码块执行 4,与wait配套使用的方法 void notify( 阅读全文
摘要:
一图胜千言 灵魂画家出品。 上述的图有些简略,下面详细说明下,线程共有6种状态: new,runnable,blocked,waiting,timed waiting,terminated 1,当进入synchronized同步代码块或同步方法时,且没有获取到锁,线程就进入了blocked状态,直到 阅读全文
摘要:
因为java有个重要的特性,叫垃圾自动回收机制,所以答案是多线程,这里面有两部分,主线程(用户线程),垃圾回收线程GC(守护线程)同时存在。 阅读全文