A_E*_*ric 0 java multithreading
我正在编写一个文件,可以在线拨打大量不同地点的电话(遗憾的是这是要求的一部分)
我的问题是这样的:
我们假设我有一个main方法,并想调用其他方法:
public static void main(String args[]){
//how do I break stuff into threads here
Thread nameThread1 = new(fileName.DoMethod1(x))
Thread nameThread2 = new(fileName.DoMethod2(x))
Thread nameThread3 = new(fileName.DoMethod3(x))
Thread nameThread4 = new(fileName.DoMethod4(x))
Thread nameThread5 = new(fileName.DoMethod5(x))
}
//fileName.java
public static void doMethod1(object){
//Do Method Stuff
}
public static void doMethod2(object){
//Do Method Stuff
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了一些关于如何实现它的指南,但我仍然对确切的方法感到困惑.
有人可以告诉我一些例子吗?谢谢!
你不能在帖子中调用不同的方法.你可以做的是打电话给不同的班级:
public static void main(String args[]){
Thread nameThread1 = new Thread(new Method1(x));
nameThread1.start();
Thread nameThread2 = new Thread(new Method2(x));
nameThread2.start();
Thread nameThread3 = new Thread(new Method3(x));
nameThread3.start();
Thread nameThread4 = new Thread(new Method4(x));
nameThread4.start();
Thread nameThread5 = new Thread(new Method5(x));
nameThread5.start();
}
public class Method1 implements Runnable {
private Object obj;
public Method1(Object obj) {
this.obj = obj;
}
//fileName.java
public void run(){
//Do Method Stuff
}
}
Run Code Online (Sandbox Code Playgroud)
您应该始终考虑使用创建ExecutorService代码来管理这样的作业.例如:
// create a thread pool with 10 workers
ExecutorService threadPool = Executors.newCachedThreadPool();
threadPool.submit(new Method1(x));
threadPool.submit(new Method2(x));
...
// once we have submitted all jobs to the thread pool, it should be shutdown
threadPool.shutdown();
Run Code Online (Sandbox Code Playgroud)
如果你必须使用一个类,那么你可以启动一个Runnable使用开关或类似的东西:
public static void main(String args[]){
Thread nameThread1 = new Thread(new Method(1, x));
nameThread1.start();
Thread nameThread2 = new Thread(new Method(2, x));
nameThread2.start();
...
}
public class Method1 implements Runnable {
private int which;
private Object obj;
public Method1(int which, Object obj) {
this.which = which;
this.obj = obj;
}
//fileName.java
public void run(){
switch(which) {
case 1:
doMethod1(obj);
break;
case 2:
doMethod2(obj);
break;
...
}
}
private void doMethod1(Object obj){
...
}
private void doMethod2(Object obj){
...
}
}
Run Code Online (Sandbox Code Playgroud)
但执行者或单独的Runnable班级会更清洁.
| 归档时间: |
|
| 查看次数: |
3358 次 |
| 最近记录: |