草庐IT

信号分配

全部标签

java - Swing - Qt 信号/槽的替代品

在QtGUI中,使用信号和槽非常方便——它解耦了事件传递。当我创建一些抛出信号的小部件时,我不必事先知道谁可以获得它,稍后使用connect我指定连接。Java/Swing中的并行是什么?您能否指出有关此问题的良好资源? 最佳答案 如果没有现成的EventListener实现满足您的要求,您可以创建自己的自定义事件。每个JComponent包含类型为EventListenerList的字段.您可以使用EventListenerList中概述的方法启用自定义的APIJComponent子类来触发您的自定义事件。关于信号/槽机制,Swi

Java LinkedBlockingQueue 能够在完成时发出信号吗?

我的情况是单个生产者和单个消费者处理对象队列。队列可能为空有两种情况:消费者处理对象的速度比生产者生成新对象的速度快(生产者在生成对象之前使用I/O)。生产者已完成对象的生成。如果队列为空,我希望消费者等到新对象可用或生产者发出完成信号。到目前为止,我的研究让我一无所获,因为我仍然以一个同时检查队列和一个单独的boolean标志(isDone)的循环结束。鉴于没有办法等待多个锁(想到等待队列和标志),可以做些什么来解决这个问题? 最佳答案 首先,使用包装器“开销太大”的建议是一种猜测,IMO是一个非常糟糕的建议。这个假设应该通过具有

java - 字符串创建和字符数组内存分配

我已经阅读了很多关于创建String时内存分配的相互矛盾的文章。有些文章说new运算符在堆中创建一个字符串,而字符串字面量在字符串池[堆]中创建,而有些文章则说new运算符在堆中创建一个对象,在字符串池中创建另一个对象。为了对此进行分析,我编写了以下程序,打印了Stringchar数组和String对象的哈希码:importjava.lang.reflect.Field;publicclassStringAnalysis{privateintshowInternalCharArrayHashCode(Strings)throwsSecurityException,NoSuchField

Java - 无需获取的信号量释放

我有给定随机数(1到n)的线程,并指示按排序顺序打印它们。我使用了信号量,这样我就获得了许可数=随机数,并比获得的多释放一个许可。acquired=randomnumber;released=1+randomnumber信号量的初始许可计数为1。因此随机数为1的线程应该获得许可,然后是2,依此类推。根据下面给出的文档支持这一点Thereisnorequirementthatathreadthatreleasesapermitmusthaveacquiredthatpermitbycallingacquire().问题是我的程序在1forn>2之后卡住了。我的程序如下:importjav

java - 快速排序算法未正确分配枢轴

我观看了快速排序算法的精彩可视化:http://www.youtube.com/watch?v=Z5nSXTnD1I4我觉得我真正理解了快速排序背后的原理,并且在一些在线指南的帮助下,着手创建我自己的快速排序。这是我想出的:publicvoidquickSort(int[]a,intleft,intright){intindex=partition(a,left,right);if(leftpivot)j--;if(i左右的取值如下:left=0right=arraysize-1很遗憾,输出不正确。问题似乎出在我对枢轴的处理上。在我观看的可视化中,讲师物理地移除了枢轴并让指针指向任何地

java - 为什么不能分配 I <?将类型> 扩展到 <类型>?

以下语句:URLClassLoaderucl=(URLClassLoader)ClassLoader.getSystemClassLoader();Classuclc=ucl.getClass();失败错误:Typemismatch:cannotconvertfromClasstoClass这里为什么需要类型转换?我发现有几篇文章解释了为什么你不能做相反的事情(将T分配给a),但这(有点)显而易见并且易于理解。注意:我是在eclipseLuna下编写代码的,所以我不知道这是Luna的怪癖,还是我真的不了解泛型。 最佳答案 Covar

java - 分配大文件

我需要分配大小接近50GB的文件,但是这段代码:RandomAccessFileout=newRandomAccessFile("C:\\hello.txt","rw");out.setLength(50*1024*1024*1024);//50giga-bytes抛出异常:Exceptioninthread"main"java.io.IOException:Попыткапоместитьуказательнафайлпередначаломфайлаatjava.io.RandomAccessFile.setLength(NativeMethod)atExperiment.main

java - float 到双重分配

考虑以下代码片段floatnum=281.583f;intamount=(int)Math.round(num*100f);floatrounded=amount/100.0f;doubledblPrecision=rounded;doubledblPrecision2=num;System.out.println("num:"+num+"amount:"+amount+"rounded:"+rounded+"dbl:"+dblPrecision+"dbl2:"+dblPrecision2);我得到的输出是num:281.583amount:28158rounded:281.58dbl

Java 分配内存泄漏

我必须假设以下方法不会泄漏内存:publicfinalvoidsetData(finalIntegerp_iData){data=p_iData;}其中data是某个类的属性。每次调用该方法时,新整数都会替换当前存在的数据引用。那么当前/旧数据发生了什么?Java必须在底层做一些事情;否则,每次分配一个对象时,我们都必须清空所有对象。 最佳答案 简单的解释:垃圾收集器会定期查看系统中的所有对象,并查看哪些对象无法再从Activity引用中访问。它释放任何不再可达的对象。请注意,您的方法根本不会创建一个新的Integer对象。例如,可

java - 以负载均衡方式在 4 个线程上分配 10 个无限作业 (Java)

我有10个计算作业,需要(接近)无限时间。例如:计算PI的下一位,solve一个NP-hard约束满足问题等。我有4个线程(所以在一台有8个内核的机器上有一个有4个线程的线程池,所以我还有一些内核可以避免活锁机器和过程)。使用Java8,如何在这4个线程中分配这10个作业?这是个坏主意:ExecutorServicees=Executors.newFixedThreadPool(4);for(Jobj:jobs){es.submit(j);}因为4个工作将开始,但没有一个完成,所以工作5-10永远不会开始。例如,如果我查看10分钟,我预计每个作业运行了大约4分钟。20分钟后,每个作业运