Netbeans中的Java线程 - 抛出新的UnsupportedOperationException

时间:2015-10-14 11:40:24

标签: java multithreading netbeans

我正在尝试使用Java中的Threads实现Round Robin并面临这个问题。 当我运行这个程序时,它会询问我运行进程的进程ID和时间量,但在我指定之后它只显示一条消息BUILD SUCCESSFUL并且不显示循环Robin进程抢占。但是,如果我使用cmd并执行相同的代码它工作正常请帮助.... ???

package thread;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class job implements Runnable {
int process_id,no_of_instr,time_quantum;
Thread t;
public job(int pid,int instr,int tq) {
    process_id=pid;
    no_of_instr=instr;
    time_quantum=tq;
    t=new Thread(this);
    t.start();
}

public void run() {
    try {
    System.out.println("Process Id " + process_id); 
    for(int i=0;i<no_of_instr;i++) {
        System.out.println("Executing Instruction no " + i + " for Process      id " + process_id);
        Thread.sleep(time_quantum);
        }

    System.out.println("Job " + process_id + " is over");

    }catch(Exception e) {
        System.out.println("Exception" + e);
            } // end of catch
    } // end of run

}

public class Thread {

static void sleep(int time_quantum) {
    //throw new UnsupportedOperationException("Not supported yet."); //To   change body of generated methods, choose Tools | Templates.
}

Thread(job aThis) {
    //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

void start() {
    //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
public static void main(String[] args) {
    try {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter Process Id");
        int process_id=Integer.parseInt(br.readLine());
        System.out.println("Enter Time Quantum (In milliseconds)");
        int time_quantum=Integer.parseInt(br.readLine());
        job j1=new job(++process_id,24,time_quantum);
        job j2=new job(++process_id,3,time_quantum);
        job j3=new job(++process_id,3,time_quantum);
    }catch(IOException | NumberFormatException e) {
            System.out.println("Can't create because of Exception" + e);
            }
}

}

1 个答案:

答案 0 :(得分:0)

我认为你对Java线程如何工作有错误的想法。

Java中的标准线程行为由名为java.lang.Thread的标准类实现。此类和关联的JVM基础结构将导致您的代码在不同的核心上运行。

您所做的就是创建一个名为thread.Thread的自己的类,它有一些方法签名,看起来像标准Thread API中的一些方法。但是你似乎用空体实现了那些方法。所以,当然,当你的main()方法调用它们时,它们什么都不做。

这是完全错误的做法。你不应该写自己的thread.Thread课程。你应该使用java.lang.Thread 1

我建议您从头开始阅读Oracle Java Tutorial Concurrency lesson

1 - 实际上,不可能做java.lang.Thread类在纯Java中所做的事情......除非你去用Java实现自己的JVM。 < / p>