今天去**面试了一下那个技术面试官明显懂得不多,为了一个他明显说错的问题我做一下阐述希望对大家日后的面试能有点帮忙,我是翻脸了,对这样的要有底线,哈哈
问,class A 中两个方法 method1 method2 都用了synchronized,那么new classA
多线程访问 method1、method2 是不是线程安全的。
首先答案是安全的,一个线程访问一个object的method1代码片段的时候会获得整个对象的锁,也就是所object内是安全的。他确实说两个分别synchronized的代码块是独立的真可笑
但是如果是一个object的synchronized代码段的话其他线程是可以访问非synchronized的代码片段。
刚才亲自用代码实践了一下测试代码如下:
package com.example; public class Sync { public synchronized String getA() throws InterruptedException { System.out.println(Thread.currentThread().getName()); Thread.currentThread().sleep(1000); System.out.println("-----------------------------"); return "-----------a"; } public synchronized String getB() throws InterruptedException { System.out.println(Thread.currentThread().getName()); Thread.currentThread().sleep(1000); System.out.println("-----------------------------"); return "-----------b"; } public static void main(String[] args) { final Sync sync = new Sync(); final Sync sync2 = new Sync(); new Thread(new Runnable() { @Override public void run() { try { System.out.println(sync.getA()); } catch (InterruptedException e) { } } }).start(); new Thread(new Runnable() { @Override public void run() { try { System.out.println(sync.getB()); } catch (InterruptedException e) { } } }).start(); } }
输出结果
Thread-1
-----------------------------
-----------b
Thread-0
-----------------------------
-----------a
可笑的是那个哥们纠结这个问题跟我聊了好半天。。。。。。。。
相关推荐
【JAVA知识问答器】是一个基于Java编程语言开发的智能问答系统,它涵盖了Java语言的大量知识点,旨在帮助用户深入理解和掌握Java技术。该系统利用单例模式设计,确保在整个应用程序中只有一个实例存在,以提高资源...
7. **线程优先级**:理解Java线程的优先级,以及它在实际应用中的效果和限制。 8. **线程安全**:学习线程安全的类和非线程安全的类,以及如何确保对象在多线程环境下的正确使用。 9. **并发容器**:如...
在Java这个强大的平台上构建智能问答系统,可以充分利用其丰富的类库和强大的多线程处理能力,为用户提供无缝的交互体验。 一、系统架构 Java智能问答系统通常采用三层架构:用户界面层、业务逻辑层和数据访问层。...
在本《Java 问答式教程》中,我们将深入探讨Java编程语言的各种核心概念和技术,以问答的形式呈现,便于读者理解并解决实际问题。Java是一种广泛使用的面向对象的编程语言,以其跨平台性、高效性和安全性著称。本...
Java作为一门广泛使用的编程语言,其经典问答涵盖了众多领域,包括基础语法、面向对象特性、集合框架、多线程、异常处理、IO流、网络编程、反射机制、JVM优化、设计模式等。这份"Java经典问答"资料,无疑是准备面试...
Java问答式教程是针对Java初学者精心设计的一种学习资源,旨在通过解答常见问题来帮助学习者深入理解Java编程语言的核心概念和技术。这份教程涵盖了多个关键知识点,包括但不限于基础语法、面向对象编程、异常处理、...
在本项目"JAVA实现知识问答服务器"中,我们将探讨如何使用Java编程语言构建一个能够处理问题与答案交互的服务器。这个服务器是针对初学者设计的,因此它将涵盖Java的基础概念,同时也为进阶学习者提供了实践平台。...
Java是世界上最流行的编程语言之一,尤其在企业级应用...这些知识涵盖了Java基础、多线程、Web开发等多个方面,对于Java实习生来说是非常重要的面试准备内容。在实际面试中,深入理解和灵活运用这些概念是非常关键的。
"java技术问答" Java技术问答是Java程序员必须掌握的基本概念和技术细节。本文将详细介绍Java中String和StringBuffer的区别、Java基础知识、ArrayList和Vector的区别、HashMap和Hashtable的区别、char型变量中能否...
### Java面试100问答知识点总结 #### 1. 面向对象的特征 面向对象编程(OOP)是现代软件开发中广泛采用的一种编程范式。它主要由以下四个特征构成: - **抽象**:抽象是面向对象编程的基础之一。它通过忽略对象不必...
多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题
在Java编程领域,经典问答通常涉及了许多核心概念和技术,这些内容是每个Java开发者都需要掌握的基础。以下是基于"Java经典问答"这一主题的一些关键知识点的详细解释: 1. **基础概念**: - **Java是什么**:Java...
在Java的学习过程中,掌握各种经典问答是提升技能的关键。以下是一些Java编程中常见的问题和答案,这些问题涵盖了基础概念、语法特性、面向对象原则、异常处理、集合框架、多线程、网络编程等多个方面。 1. **Java...
Java中的Thread类提供了构造函数,可以传入Runnable对象作为执行体,而Python中则通过`threading`模块创建线程。 2. **线程状态**:线程有五种基本状态:新建(New)、就绪(Runnable)、运行(Running)、阻塞...
"Java经典问答"可能包含了各种Java编程中常见的问题和解答,旨在帮助开发者深化对Java的理解,提升编程技能。以下是根据标题和描述可能涵盖的一些Java知识点: 1. **基础语法**:包括变量声明、数据类型(基本类型...
源码中可能包含了Java的核心概念,如类、对象、接口、异常处理、多线程、网络编程等。 “源码软件”标签意味着我们能够查看并理解系统的内部工作原理,这对于学习和修改代码非常有价值。源码中可能会包含MVC(Model...
【JAVA基础问答详解】 1. 关于final, finally, finalize的区别 - final:final用于修饰类、变量和方法,表示不可变性。对于类,final意味着不能有子类;对于变量,final变量一旦初始化就不能再改变;对于方法,...
5. **设计模式**:在实现多线程问答器时,可能会用到生产者消费者模型、线程池(ThreadPool)等设计模式,以优化线程的创建和管理,减少资源消耗。 6. **线程池**:Java的ExecutorService接口和ThreadPoolExecutor...