我想用这段代码实例化一个新的java ThreadPoolExecutor:
public class ImageList {
private LinkedBlockingQueue<Image> list;
private final ThreadPoolExecutor executor;
public ImageList() {
executor = new ThreadPoolExecutor(2, 4, 100, TimeUnit.SECONDS, list);
}
}
其中,Image具有以下标头:
public cla
我正在尝试编写一个像ArrayBlockingQueue这样的简单队列,在这个队列中,如果队列已经满了,那么队列的头将被移除,同时添加一个元素。这个类应该只有下面的公共方法
以获取队列的大小。
从队列的头获取一个元素。如果没有可用的元素块。
在队列尾部添加元素
有人能检查下面的代码并让我知道是否有更好的方法这样做吗?
public class CircularArrayNonBlockingQueue<E> {
private ArrayBlockingQueue<E> blockingQueue;
public CircularA
我正在尝试编写一个像ArrayBlockingQueue这样的简单队列,在这个队列中,如果队列已经满了,那么队列的头将被移除,同时添加一个元素。这个类应该只有下面的公共方法
以获取队列的大小。
从队列头获取元素
在队列尾部添加元素
有人能检查下面的代码并让我知道是否有更好的方法这样做吗?
public class CircularArrayNonBlockingQueue<E> {
private ArrayBlockingQueue<E> blockingQueue;
public CircularArrayNonBlockingQueue(int
如果我写的像def l = [1, 2, 3] as Socket这样的东西显然是胡说八道,我就明白了:
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '[1, 2, 3]' with class 'java.util.ArrayList' to class 'java.net.Socket'
这事儿可以理解。
现在我尝试一些不那么冒险的东西:
import java.util.concurrent.BlockingQueue
我已经创建了两个线程,并修改了run函数,以便一个线程读取一行,另一个线程将同一行写入新文件。直到复制完整个文件,才会发生这种情况。我得到的问题是,即使我已经使用变量来控制线程一个接一个地执行,但是线程的执行仍然是不均匀的,即一个线程执行多次,然后控制转移。任何解决方案我都附上了代码。我对java是个新手,因为它只用于类分配,所以代码可能不是最优化的。
public class thread1 extends Thread {
//To create producer and consumer as threads
//Shared variable
这是我拥有的代码。我在构造函数的最后一行(workerQueuei = new LinkedBlockingQueue(100);)中有一个空指针异常:
public class QueueThreadPool {
private BlockingQueue<String>[] workerQueue;
private Thread[] workerThreads;
private int numQueues;
private int numThreads;
public QueueThreadPool(int numThreads, int numQueues
我在实现以下场景时遇到了困难,因为我对多线程很陌生。有人能帮我吗?
所需经费如下:
一个线程创建了从1到无穷的素数。另一个将这些数字写入控制台的线程。编写运行这两个线程的代码.
这就是我试过的:
class func1 implements Runnable{
public void run(){
int x=1, counter=0;
for (int i=0; i<=infinity; i++){
if (isPrime(i)){
p[counter] = i;
counter++;
我正在尝试一个用java实现多线程的例子。在Java Complete reference第7版中有一个关于多线程同步的例子。该示例运行良好。但是,当我稍微添加一行代码来创建同一个类的另一个线程时,这并不起作用。请告诉我为什么会发生这样的事情。下面给出了示例。下面的代码是生产者和消费者的典型例子。如果只有一个生产者,当我有两个生产者时,它工作得很好,那么它就会失败。它只是放到15,然后停下来。
class Q {
int n;
boolean valueSet = false;
synchronized int get() {
while (!val
在并发程序中,从BlockingQueue中取出对象的最好方法是什么,而不会遇到竞争条件?我目前正在做以下事情,我不相信这是最好的方法:
BlockingQueue<Violation> vQueue;
/*
in the constructor I pass in a BlockingQueue object
full of violations that need to be processed - cut out for brevity
*/
Violation v;
while ( ( v = vQueue.poll(500, TimeUnit.MILLISECOND
我在标题中输入的代码没有编译。上面写着:Cannot infer arguments。
在那之后,我做了BlockingQueue<Integer> a = new PriorityBlockingQueue<>(2);,它编译得很好。我犯了什么错,这样下次我就可以避免了?
是的,我知道Queue接口中的构造函数具有初始容量的参数(2),而在BlockingQueue参数(2)中则表示max元素。这与错误有关吗?
我知道信号量只保留可用许可的计数,而不是实际使用的许可对象,但在这种情况下,我希望每个许可都有一个特定值。
下面是我的项目,它试图获得每个许可证的ID (表),我知道它是错误的,因为它只返回到以前的许可值,而不是它获得的特定值(我希望分配)。
那么,有什么方法可以为信号量许可赋值吗?
public class Table extends Semaphore{
int total_table;
public Table(int permits) {
super(permits);
total_table = permits;
}
public int table_id(){
我正在尝试创建一个复制的BlockingQueue实现,以便在集群环境中用作分布式任务缓存。
由于它必须是分布式的,所以我需要队列的所有元素都是可序列化的。这就是我如何定义类的方法;
public class ReplicatedBlockingQueue<E extends Serializable> implements BlockingQueue<E>
然后,使用Runnable“作业”类创建阻塞队列实现,该类既可序列化,又可运行
public class Job implements Runnable,Serializable
当我使用这个队列创建ThreadP
给了两根线。线程1:打印从1到100线程2 :打印从1到100我需要确保线程1从来没有打印任何数字尚未被线程2打印。
请帮我处理这个。提前谢谢。(-我在接受威森科技采访时被问及)
我尝试了下面的方法。
package threadTutor;
public class ThreadLeader {
public static void main(String[] args) throws InterruptedException {
Leader lead = new Leader(100);
Follower foll = new Follower
所以我有个小问题。我在一个循环中检查了许多数字,其中数字只是一个每次递增的AtomicInteger。问题是有时会出现“错误”(错误与服务器有关,而不是与程序有关),线程需要休眠。在它们休眠后,我希望所有线程都返回并重新检查由于错误而错过的数字,但它只会重新检查最后一个,因为AtomicInteger已经递增。下面是我的代码:
public class Red extends java.lang.Thread {
private final LinkedBlockingQueue<Integer> queue;
public Red(LinkedBlock
我意识到这类问题已经被问过无数次了,但我还没有找到一个似乎能解决和/或解释我做错了什么的答案,以及我需要做些什么才能使它正确的答案。
我有一个应用程序,我正在尝试管理一个队列集合。队列管理器的用户将通过提供唯一ID来请求队列,如果队列已经被管理,管理器将返回队列,或者创建新队列(通过反射),如果尚未创建队列,则返回队列。
我编写了队列管理器以使用Java泛型,遇到了一个我不明白的问题,也不知道如何纠正这个问题。
以下是队列管理器:
public class QueueManager<T extends MessageType, C extends BlockingQueue<T&g
刚开始学多线程。我有5个生产者和2个消费者在多个线程。基本上,这个程序在队列中添加了100个项目。当队列大小为100时,生产者将停止添加。当使用者从队列中删除所有项目时,我希望使用者通知生产者,以便生产者能够再次开始添加。目前,生产者将等待,但永远不会得到消费者的通知。
制片人:
public class Producer implements Runnable {
private BlockingQueue sharedQueue;
private final int queueSize;
private Object lock = new Object();
public Prod
我对使用线程很陌生。在另一个类中,创建并启动ConnectionMaster类的一个实例(扩展线程)。客户端对象被赋予ConnectionMaster对象,该对象将它添加到列表中。Thread类的重写run()方法本质上侦听要添加到列表中的客户端。实际上,当客户端对象被添加到列表中时,它确实会侦听和“听到”。但是,尽管.hasNext()返回了真正的.Next(),但会导致异常。我做错了什么?
以下方法来自扩展线程的类ConnectionMaster:
构造函数
public ConnectionMaster(){
clients = new Vector<>();