java面试题:多线程交替输出偶数和奇数

一个面试题:实现两个线程A,B交替输出偶数和奇数 问题:创建两个线程A和B,让他们交替打印0到100的所有整数,其中A线程打印偶数,B线程打印奇数 这个问题配合java的多线程,很多种实现方式 在具体实现之前,首先介绍一下java并发编程中共享变量的可见性问题。 可见性问题: 在java内存模型(J ... »

你不知道的内存知识

世界上最快的捷径,就是脚踏实地,本文已收录【架构技术专栏】关注这个喜欢分享的地方。 一、CPU与内存 先铺垫几个概念,以免后面混乱: Socket或Processor: 指一个物理CPU芯片,盒装还是散装的。上面有很多针脚,直接安装在主板上。 Core : 指在Processor里封装一个CPU核心 ... »

多线程和高并发搞不懂?还谈什么面试?(附面试题解析)

前言: 作为一个 Java开发人员,多线程是一个逃不掉的话题,不管是工作还是面试,但理解起来比较模糊难懂,因为多线程程序在跑起来的时候比较难于观察和跟踪。搞懂多线程并发知识,可以在面试的时候和周围人拉开差距,另外自己在编码的时候可以做到心中有数。 1、Java 中实现多线程有几种方法 (1)继承 T ... »

ConcurrentHashMap源码解析,多线程扩容

前面一篇已经介绍过了 HashMap 的源码: HashMap源码解析、jdk7和8之后的区别、相关问题分析 HashMap并不是线程安全的,他就一个普通的容器,没有做相关的同步处理,因此线程不安全主要体现在: put、get 等等核心方法在多线程情况下,都会出现修改的覆盖,数据不一致等等问题。比如 ... »

大文件排序优化实践

在很多应用场景中,我们都会面临着排序需求,可以说是见怪不怪。我们也看过许多的排序算法:从最简单的冒泡排序、选择排序,到稍微好点的插入排序、希尔排序,再到有点理论的堆排序、快速排序,再到高级的归并排序、桶排序、基数排序。 而实际工作中我们可能用到的排序有哪些呢?而且,大部分时序,相信大家都是使用一个现 ... »

juc包:使用 juc 包下的显式 Lock 实现线程间通信

一、前置知识 线程间通信三要素: 多线程+判断+操作+通知+资源类。 上面的五个要素,其他三个要素就是普通的多线程程序问题,那么通信就需要线程间的互相通知,往往伴随着何时通信的判断逻辑。 在 java 的 Object 类里就提供了对应的方法来进行通知,同样的,保证安全的判断采用隐式的对象锁,也就是 ... »

java多线程:线程池原理、阻塞队列

一、线程池定义和使用 jdk 1.5 之后就引入了线程池。 1.1 定义 从上面的空间切换看得出来,线程是稀缺资源,它的创建与销毁是一个相对偏重且耗资源的操作,而Java线程依赖于内核线程,创建线程需要进行操作系统状态切换。为避免资源过度消耗需要设法重用线程执行多个任务。线程池就是一个线程缓存,负责 ... »

听说这四个概念,很多 Java 老手都说不清

Java 是很多人一直在用的编程语言,但是有些 Java 概念是非常难以理解的,哪怕是一些多年的老手,对某些 Java 概念也存在一些混淆和困惑。 所以,在这篇文章里,会介绍四个 Java 中最难理解的四个概念,去帮助开发者更清晰的理解这些概念: 匿名内部类的用法 多线程 如何实现同步 序列化 匿名 ... »

Python | Python初学者的自我修养,找到自己的方向

本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第21篇文章,我们继续多线程的话题。 上周的文章当中我们简单介绍了线程和进程的概念,以及在Python当中如何在主线程之外创建其他线程,并且还了解了用户级线程和后台线程的区别以及使用方法。今天我们来看看线程的其他使用 ... »

多线程面试题集-面试阿里必备

一共17道题目: 1)现在有 T1、T2、T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执 行? 这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟 悉。这个多线程问题比较简单,可以用 join 方法实现。 2)在 Java 中 ... »

Java 线程基础,从这篇开始

线程作为操作系统中最少调度单位,在当前系统的运行环境中,一般都拥有多核处理器,为了更好的充分利用 CPU,掌握其正确使用方式,能更高效的使程序运行。同时,在 Java 面试中,也是极其重要的一个模块。 线程简介 一个独立运行的程序是一个进程,一个进程中可以包含一个或多个线程,每个线程都有属于自己的一 ... »

Java多线程与并发基础

CS-LogN思维导图:记录专业基础 面试题 开源地址:https://github.com/FISHers6/CS-LogN 多线程与并发基础 实现多线程 面试题1:有几种实现线程的方法,分别是什么 1.继承Thread类,启动线程的唯一方法就是通过 Thread 类的 start()实例方法,s ... »

为什么启动线程是start方法?

为什么启动线程是start方法 十年可见春去秋来,百年可证生老病死,千年可叹王朝更替,万年可见斗转星移。 凡人如果用一天的视野,去窥探百万年的天地,是否就如同井底之蛙? 背景:启动线程是start() 还是run() 方法?相信这个问题很多人都知道是start(),但是如果我再问下去呢,为什么是st ... »