韌館-LearnHouse

[Java/WinAPI]Java和Windows的執行緒(Thread)

可能兜系統兜慣了有時候被問到很基本的問題,都會變得很不確定

今天大學的同學問我要怎樣一台主機模擬多個主機同時在做事情 然後要分配給不同的系統去做事

我直覺想它應該是想要說執行緒吧,可是他說他會在執行緒使用while loop

他不是很確定是否可以這樣做,我那時候想執行緒應該就是用來解決類似這樣的問題吧?

由於我同學是使用java,因此我就寫了一個小小的程式來測試

ThreadTest.java

public class ThreadTest{

public static void main(String[] args) {
ThreadRun r1 = new ThreadRun();
ThreadRun r2 = new ThreadRun();

Thread t1 = new Thread(r1, "執行緒A");
Thread t2 = new Thread(r2, "執行緒B");
t1.start();
t2.start();
}
}

class ThreadRun implements Runnable{

@Override
public void run() {
String ThreadID;
int i = 1;

while(true){
ThreadID = Thread.currentThread().getName()+"迴圈執行第"+i+"次!!";
System.out.println(ThreadID);

i++;
}
}
}

由於我是寫C/C++的,所以又用C/C++寫個小測試

#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
DWORD ThreadId;
HANDLE Thread;

//啟動多個執行緒
Thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread1, NULL, 0, &ThreadId);
Thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread2, NULL, 0, &ThreadId);

void thread1()
{
while(true)
printf("執行緒A\n");
}
void thread2()
{
while(true)
printf("執行緒B\n");
}

}

透過以上就能看出執行緒A與B是互相並行執行的,會一起爭取CPU的可用資源

有空再來寫一篇如何用CreateThread帶入多個參數。

2009年2 月 posted by admin in 程式&軟體 and have No Comments

Place your comment

Please fill your data and comment below.
名稱:
信箱:
網站:
您的評論: