java中的线程同步/生产者-消费者。重复打印出数字1-10然后10-1
我对java非常陌生,并找到了一个关于基本线程同步的练习。问题是重复打印1234567891010987654321,直到程序停止。应使用十种不同的螺纹 这是我目前的代码: 我第一次尝试只获得第一个数字(第一个工作),但它一直给我一个例外java中的线程同步/生产者-消费者。重复打印出数字1-10然后10-1,java,exception,synchronization,producer-consumer,Java,Exception,Synchronization,Producer Consumer,我对java非常陌生,并找到了一个关于基本线程同步的练习。问题是重复打印1234567891010987654321,直到程序停止。应使用十种不同的螺纹 这是我目前的代码: 我第一次尝试只获得第一个数字(第一个工作),但它一直给我一个例外 public static void main(String[] args){ threadOne one = new threadOne(); one.start(); } } class updateNumber{ priva
public static void main(String[] args){
threadOne one = new threadOne();
one.start();
}
}
class updateNumber{
private int i;
synchronized void increase(int s){
this.i=s;
System.out.println(i);
}
}
class threadOne extends Thread {
private updateNumber grab;
public void run() {
try{
grab.increase(1);
}
catch(Exception e){
System.out.println("error in thread one");
}
}
}
我可能完全错了,但我已经阅读了大量文档,完全搞糊涂了。看起来您没有创建更新的新实例
class threadOne extends Thread {
private updateNumber grab;
public void run() {
try{
grab.increase(1); // null pointer reference...<<<<<<<
}
catch(Exception e){
System.out.println("error in thread one");
}
}
}
看起来您没有创建更新的新实例
class threadOne extends Thread {
private updateNumber grab;
public void run() {
try{
grab.increase(1); // null pointer reference...<<<<<<<
}
catch(Exception e){
System.out.println("error in thread one");
}
}
}
什么例外?什么线路?当您询问有关异常的问题时,应该发布堆栈跟踪。如果有必要,您可以使用异常必须打印堆栈跟踪的
printStackTrace
方法。我定义了线程2-10,但尚未实现它们,为了更清晰,我将它们从main中取出。当我运行程序时,我的输出是异常块中的“线程1中的错误”。理想情况下,输出为1作为抓取。将执行递增(1)请打印堆栈跟踪(使用e.printStackTrace()
并发布输出。作为旁注,使用10个线程完成此任务是一个可怕的练习。我无法想象你会从中学到什么。你确定不应该使用两个线程——一个线程生成数字,另一个线程通过打印数字来使用它们吗?Java提示:始终将类名大写。你的Java用户的眼睛-有经验的同事会感谢你的。什么异常?哪一行?当你问一个关于异常的问题时,你应该发布堆栈跟踪。如果必要,你可以使用printStackTrace
方法,异常必须打印堆栈跟踪。我定义了线程2-10,但还没有实现它们,我将它们从main中取出以供使用更清楚。当我运行程序时,我的输出是异常块中的“线程1中的错误”。理想情况下,作为抓取,输出为1。将执行递增(1)。请打印堆栈跟踪(使用e.printStackTrace()
并发布输出。作为旁注,使用10个线程完成此任务是一个可怕的练习。我无法想象你会从中学到什么。你确定不应该使用两个线程——一个线程生成数字,另一个线程通过打印数字来使用它们吗?Java提示:始终将类名大写。你的Java用户的眼睛-有经验的同事会感谢你的。