我正在尝试一个生产者/消费者问题,但是我不知道为什么要进入 java.lang.NullPointerException
消费者内部。
package com ;
import java.util.concurrent.PriorityBlockingQueue;
public class Producer extends CommonClass implements Runnable {
private int producerNum;
Producer(PriorityBlockingQueue<Character> queue) {
queue = queue;
}
public void run() {
char ch;
for (ch = 'a'; ch <= 'z'; ch++) {
queue.add(ch);
System.out.println("Producer" + producerNum + "produced :" + ch);
try {
Thread.sleep((int) (Math.random() * 300));
} catch (InterruptedException e) {
System.out.println("Error");
}
}
}
}
这是我的消费类
package com ;
import java.util.concurrent.PriorityBlockingQueue;
public class Consumer extends CommonClass implements Runnable {
private int consumerNum;
Consumer(PriorityBlockingQueue<Character> queue )
{
queue = queue;
}
public void run() {
char c;
for (int i = 0; i < 27; i++) {
c = queue.poll();
System.out.println("Consumer" + consumerNum + "consumed:" + c);
try {
Thread.sleep((int) (Math.random() * 300));
} catch (InterruptedException e) {
System.out.println("Error");
}
}
}
}
package com ;
import java.util.concurrent.PriorityBlockingQueue;
public class CommonClass {
PriorityBlockingQueue<Character> queue = new PriorityBlockingQueue<Character>();
}
package com ;
import java.util.concurrent.PriorityBlockingQueue;
public class SyncTest {
public static void main(String[] args) {
PriorityBlockingQueue<Character> queue = new PriorityBlockingQueue<Character>();
Producer p1 = new Producer(queue);
Thread t1 = new Thread(p1);
t1.start();
Consumer c1 = new Consumer(queue);
Thread ct1 = new Thread(c1);
ct1.start();
}
}
这是我得到的例外:
Exception in thread "Thread-1" java.lang.NullPointerException
at com.Consumer.run(Consumer.java:18)
at java.lang.Thread.run(Unknown Source)
这是当前的问题:
Consumer(PriorityBlockingQueue<Character> queue )
{
queue = queue;
}
那是一条无操作的语句,将参数的值赋给它自己。你要:
Consumer(PriorityBlockingQueue<Character> queue )
{
this.queue = queue;
}
一旦你定,你会 再
有一个潜在的问题,因为调用poll()
(decalred中Queue
),这将返回null
如果队列为空。然后,该空引用将被取消装箱,以将值分配给c
变量(类型char
)。
请改用take()
(在中声明BlockingQueue
),这将阻止。您可能还需要指定一个超时。
这是消费者: 有人能帮我解决这些问题吗?非常感谢!
在Hibernate中,我在运行时收到以下错误 1.employee.hbm.xml 4.storedata.java 执行后出错: log4j:警告找不到logger(org.hibernate.cfg.environment)的附加程序。log4j:警告请正确初始化log4j系统。线程“main”org.hibernate.invalidmappingException中的异常:无法解析来自资
问题内容: 我想在laravel 5.2中使用Redis,但是却出现错误,例如找不到“ Predis \ Client”类,该如何解决。 问题答案: 首先将REDIS下载到您的系统(如果尚未安装)。 转到下载redis的文件夹,然后运行以下命令: make 转到您的项目目录并安装composer: 转到您的.env文件并添加队列驱动程序: 用于通过队列发送邮件。参见Doc。 并在您的终端运行中:
问题内容: 我在Java中有一个简单的Kafka Consumer,带有以下代码 发布消息后,将成功读取数据,但是当它返回检查它时。hasNext(),它将保持待处理状态,再也不会返回。 什么会拖延这个? m_stream是通过以下方式获得的KafkaStream: 问题答案: 解决方案是添加属性 “ consumer.timeout.ms” 现在,当达到超时时,将引发ConsumerTimeou
问题内容: 我在android虚拟机中使用以下代码 我收到HttpHostConnectException。不知道为什么?我已将网址中的地址从127.0.0.1更改为10.0.2.2,但仍然收到该异常。我的电脑中安装了wamp服务器,文件“ ReadingFromServer.php”位于“ www”文件夹中。 这是完整的堆栈跟踪 谢谢。 问题答案: 您是否在AndroidManifest.xml
我是JasperReports新手,我已经将插件添加到netbeans IDE中,试图使用表创建报表,我还在iReport设计器中设计了一个表,并将其连接到sql数据库,当我单击预览按钮时,会收到以下警告 Blockquote net.sf.jasperreports.engine.design.jrvalidationexception: 报告 ;design ;not ;valid ; ·