草庐IT

locks_block

全部标签

java - java流中的最佳 block 大小

我有一个理论问题。假设您有一个InputStream和一个OutputStream。您需要将内容从一个复制到另一个,并且您不知道需要传输的内容的确切大小。write方法中block大小的一般最佳选择是什么? 最佳答案 答案是:视情况而定。对于通用解决方案,不要担心,只需使用库即可。常见选择:ApacheCommonsIOIOUtils#copy()或copyLarge(),或GoogleGuava的ByteStreams#copy() 关于java-java流中的最佳block大小,我们

java - 在 SAX (Java) 中解析大型 XML 文件时在 DOM 中加载本地 block

我有一个xml文件,我可以避免将其全部加载到内存中。众所周知,对于这样的文件,我最好必须使用SAX解析器(它将沿着文件进行解析,并在找到相关内容时调用事件。)我目前的问题是我想“按block”处理文件,这意味着:解析文件并找到相关标签(节点)将这个标签完全加载到内存中(就像我们在DOM中做的那样)执行这个实体(那个本地block)的过程当我处理完block后,释放它并继续到1。(直到“文件结束”)在一个完美的世界里,我正在搜索这样的东西://1.CreateaparserandsetthefiletoloadIdealParserp=newIdealParser("BigFile.xm

java - Thread.holdsLock(lock) 的目的是什么?

我看到有人用断言!Thread.holdsLock(lock)以避免死锁。这样做的目的是什么?如果锁对象被另一个线程持有,assert会导致代码立即退出吗? 最佳答案 javadocofthemethod说:Returnstrueifandonlyifthecurrentthreadholdsthemonitorlockonthespecifiedobject.(强调我的)因此,断言检查当前线程是否持有给定锁对象的监视器锁。请注意,断言用于检查不变量,可以禁用。它们不应用于防止死锁。应该使用常规的if测试来做到这一点。

java - 如何在 Java 6 中捕获所有已检查的异常(在一个 block 中)?

重要提示:此问题仅与Java6(及更低版本)有关。层次结构here显示JavaException分为两种类型:RuntimeException和[notaRuntimeException]:将它分成类似UncheckedException和CheckedException这样的东西不是更好吗?例如,下面的语句有相当多的已检查异常:try{transaction.commit();}catch(SecurityExceptione){}catch(IllegalStateExceptione){}catch(RollbackExceptione){}catch(HeuristicMixe

java - 初始化 block 可以抛出异常吗?

我在类中使用BufferedReader来读取文件。我试图在初始化block中初始化它。classReadFromFile{BufferedReaderbr;{br=newBufferedReader(newFileReader(newFile("file.txt")));}}初始化block中的行抛出FileNotFoundException异常。所以,编译器给出错误。我不想用try-catchblock包围它。我通过使用构造函数而不是初始化block解决了这个问题,比如:classReadFromFile{BufferedReaderbr;publicReadFromFile()t

java - 没有任何 catch 语句的 Try block

我正在通读一本Java教科书中有关异常和断言的一章,并遇到了我有疑问的这段代码。publicbooleansearchFor(Stringfile,Stringword)throwsStreamException{Streaminput=null;try{input=newStream(file);while(!input.eof())if(input.next().equals(word))returntrue;returnfalse;//notfound}finally{if(input!=null)input.close();}}在下一段中,文本说“searchFor方法声明它抛

java - 有没有办法多次执行静态 block ?如果是这样,那又如何呢?

我的理解静态block在类加载期间执行,如果类已经加载则除了类重新加载之外没有办法加载该类疑问/问题1)JVM是否有重新加载类的时间?我的理解在类加载中,JVM加载Java文件的字节码,因此它无法将所有数千个类的字节码保存在内存中,因此它可能会丢弃很少使用的代码并在必要时重新加载它,并且在重新加载期间JVM不会初始化静态变量和再次阻塞(可能使用了一些跟踪机制)疑问/问题2)如果我上面的理解不正确,请指正 最佳答案 据我所知,JVM本身永远不会重新加载一个类;一旦加载了一个类,它就会永远保持加载状态。出于这个原因,类定义保存在“Per

java - 判断当前线程是否持有 Java `Lock`

假设我有一个java.util.concurrent.locks.Lock的实例是否可以判断锁是否被当前线程持有?假设锁对象只实现了Lock接口(interface),不一定是可重入的,所以调用lock或tryLock可能不是一个好方法检查锁的方法。 最佳答案 Lock接口(interface)本身不提供这样的功能,但是它的通用实现器ReentrantLock有这样的方法:ReentrantLock.isHeldByCurrentThread().但是请注意,如文档所述,此方法的主要目的是调试、断言和测试。如果您需要它用于正常的程序

java - Java 编译器是否优化了空的同步块(synchronized block)?

假设我在代码的某处写了一个空的synchronizedblock:synchronized(obj){//Nocodehere}因此,由于同步块(synchronizedblock)不包含任何代码,JIT编译器是否会通过不锁定obj来优化它,因为它没有用?Java编译器会做一些类似的技巧,例如Lockcoarsening,但是这个同步块(synchronizedblock)是否也会被优化掉?编辑:根据assylias的观点,synchronized(newObject()){//emptyblock}JIT编译器现在是否能够优化它,因为我使用的对象不会转义我的方法?

java - 有人可以解释 "Note: This method should be called under AWT tree lock."吗?

我正在尝试让我的程序读取以类似问卷的形式输入的答案。为此,我计划使用getComponents()获取所需的答案字段(例如,文本字段,单选按钮等),然后使用诸如getText()之类的方法读取答案。我从未使用过getComponents(),而只是在学习Java/Swing/AWT。getComponents()文档中的上述警告使我感到恐惧,因为我不知道什么是“树锁”,或者在哪里可以找到它。谷歌一无所获。即使事实证明getComponents()对于我的问题来说是不合适的解决方案,为了学习,我仍然希望我的问题得到解答。谢谢!:) 最佳答案