병렬 프로그래밍을 사용하여 선형 방정식을 풀기 위해 java로 프로그램을 개발 중입니다. 나는 그것을 해결하기위한 코드를 작성했다. 멀티 코어 프로세서에서 작동하도록 수정하는 방법? 몇 가지 예를 들어 보겠습니다. mpi (메시지 전달 인터페이스)에 대해 들었습니다. 내 코드에서 어떻게 사용합니까?자바 프로그램을 병렬 처리하는 방법은 무엇입니까?
0
A
답변
0
당신이 할 수있는 일은 멀티 스레딩뿐입니다. OS 관리자가 여러 코어를 통해 프로세스를 공유하기를 바랍니다.
는 가장 간단한 방법은 ThreadPoolExecutors을 사용하는 것입니다 http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.html
4
를 참조하십시오, 당신은 튜토리얼 here을 볼 수 있습니다.
예는 수 :
import java.util.concurrent.*;
import java.util.*;
class MyThreadPoolExecutor
{
int poolSize = 2;
int maxPoolSize = 2;
long keepAliveTime = 10;
ThreadPoolExecutor threadPool = null;
final ArrayBlockingQueue<Runnable> queue = new ArrayBlockingQueue<Runnable>(
5);
public MyThreadPoolExecutor()
{
threadPool = new ThreadPoolExecutor(poolSize, maxPoolSize,
keepAliveTime, TimeUnit.SECONDS, queue);
}
public void runTask(Runnable task)
{
// System.out.println("Task count.."+threadPool.getTaskCount());
// System.out.println("Queue Size before assigning the
// task.."+queue.size());
threadPool.execute(task);
// System.out.println("Queue Size after assigning the
// task.."+queue.size());
// System.out.println("Pool Size after assigning the
// task.."+threadPool.getActiveCount());
// System.out.println("Task count.."+threadPool.getTaskCount());
System.out.println("Task count.." + queue.size());
}
public void shutDown()
{
threadPool.shutdown();
}
public static void main(String args[])
{
MyThreadPoolExecutor mtpe = new MyThreadPoolExecutor();
// start first one
mtpe.runTask(new Runnable()
{
public void run()
{
for (int i = 0; i < 10; i++)
{
try
{
System.out.println("First Task");
Thread.sleep(1000);
} catch (InterruptedException ie)
{
}
}
}
});
// start second one
/*
* try{ Thread.sleep(500); }catch(InterruptedException
* ie){}
*/
mtpe.runTask(new Runnable()
{
public void run()
{
for (int i = 0; i < 10; i++)
{
try
{
System.out.println("Second Task");
Thread.sleep(1000);
} catch (InterruptedException ie)
{
}
}
}
});
// start third one
/*
* try{ Thread.sleep(500); }catch(InterruptedException
* ie){}
*/
mtpe.runTask(new Runnable()
{
public void run()
{
for (int i = 0; i < 10; i++)
{
try
{
System.out.println("Third Task");
Thread.sleep(1000);
} catch (InterruptedException ie)
{
}
}
}
});
// start fourth one
/*
* try{ Thread.sleep(500); }catch(InterruptedException
* ie){}
*/
mtpe.runTask(new Runnable()
{
public void run()
{
for (int i = 0; i < 10; i++)
{
try
{
System.out.println("Fourth Task");
Thread.sleep(1000);
} catch (InterruptedException ie)
{
}
}
}
});
// start fifth one
/*
* try{ Thread.sleep(500); }catch(InterruptedException
* ie){}
*/
mtpe.runTask(new Runnable()
{
public void run()
{
for (int i = 0; i < 10; i++)
{
try
{
System.out.println("Fifth Task");
Thread.sleep(1000);
} catch (InterruptedException ie)
{
}
}
}
});
// start Sixth one
/*
* try{ Thread.sleep(500); }catch(InterruptedException
* ie){}
*/
mtpe.runTask(new Runnable()
{
public void run()
{
for (int i = 0; i < 10; i++)
{
try
{
System.out.println("Sixth Task");
Thread.sleep(1000);
} catch (InterruptedException ie)
{
}
}
}
});
mtpe.shutDown();
}
}
+0
가치있는 예제는 http://programmingexamples.wikidot.com/threadpoolexecutor에서 가져 왔습니다. – amit
관련 문제
- 1. Linq에서 "병렬"시퀀스를 처리하는 방법은 무엇입니까?
- 2. hpc에서이 코드를 병렬 처리하는 방법은 무엇입니까?
- 3. 자바 프로그램을 시작하는 방법은 무엇입니까?
- 4. 병렬 자바 라이브러리
- 5. C에서 크로스 플랫폼 병렬 프로그램을 작성하는 방법은 무엇입니까?
- 6. 자바 병렬 작업 반복기?
- 7. 자바 병렬 (유용한) 패키지
- 8. 내 haskell 병렬 코드의 모든 병렬 처리를 악용하는 방법은 무엇입니까?
- 9. Java로 사운드를 처리하는 방법은 무엇입니까?
- 10. CFML에서 시간대를 처리하는 방법은 무엇입니까?
- 11. 컴파일러가 주석을 처리하는 방법은 무엇입니까?
- 12. 병렬 배열로이 데이터를 처리하는 기본 방법
- 13. Java에서 병렬 프로그래밍을 수행하는 방법은 무엇입니까?
- 14. JavaScript가 꺼져있는 브라우저를 처리하는 방법은 무엇입니까?
- 15. FileNotFoundException을 처리하는 방법은 무엇입니까?
- 16. 자바 6의 병렬 행렬 곱셈
- 17. ClickOnce를 사용하여 병렬 설치 프로그램을 게시하는 방법?
- 18. 메모리 누수를 처리하는 방법은 무엇입니까?
- 19. JavaScript로 쿠키를 처리하는 방법은 무엇입니까?
- 20. 자바 스크립트에서 병렬 배열 정렬
- 21. 프로필 자바 병렬/순차 정렬
- 22. 데이터베이스 초기화를 처리하는 방법은 무엇입니까?
- 23. 개체 리터럴을 처리하는 방법은 무엇입니까?
- 24. 자바 "작업"을 동 기적으로 처리하는 방법은 무엇입니까?
- 25. 자바 : 많은 필드와 캡슐을 깨끗하게 처리하는 방법은 무엇입니까?
- 26. 맞춤 컨트롤 내에서 자바 스크립트를 처리하는 가장 좋은 방법은 무엇입니까?
- 27. 정규식 (자바 대 xsd)의 다른 방언을 처리하는 방법은 무엇입니까?
- 28. 자바 스크립트에서 여러 키 이벤트를 처리하는 가장 좋은 방법은 무엇입니까?
- 29. 자바 서블릿 : 알 수없는 인코딩을 처리하는 방법은 무엇입니까?
- 30. 자바 스크립트 및 CSS 파일을 처리하는 가장 좋은 방법은 무엇입니까
http://download.oracle.com/javase/tutorial/essential/concurrency/ –
첫 번째 단계는 프로그램을 작은 조각으로 분리 할 수있는 방법을 결정합니다. 다음 단계는 실제로 작은 조각들을 병렬 처리하는 것이 더 빠르다는 것을 결정하는 것입니다. – Jeremy
병렬 프로그램을 작성하기 위해 java를 프로그래밍 언어로 사용해야합니까? – Bartzilla