我想並排執行多條線程。例如:
ex:會有一個簡單的計數器方法,線程將訪問該方法並打印計數器值。一個線程在開始之前不應該等待另一個線程停止。並行執行多條線程
樣品輸出[也許]:
T1 1
T2 1
T1 2
T1 3
T1 4
T2 2
T1 5
我沒有事先關於多線程的想法,只是想學習。
我想並排執行多條線程。例如:
ex:會有一個簡單的計數器方法,線程將訪問該方法並打印計數器值。一個線程在開始之前不應該等待另一個線程停止。並行執行多條線程
樣品輸出[也許]:
T1 1
T2 1
T1 2
T1 3
T1 4
T2 2
T1 5
我沒有事先關於多線程的想法,只是想學習。
如果在計數器共享你想要的東西是這樣的:
class ThreadTask implements Runnable {
private static AtomicInteger counter = new AtomicInteger();
private int id;
public ThreadTask(int id) { this.id = id; }
public void run() {
int local = 0;
while((local = counter.incrementAndGet()) < 500) {
System.out.println("T" + id + " " + local);
}
}
}
...
new Thread(new ThreadTask(0)).start();
new Thread(new ThreadTask(1)).start();
否則,如果你想有一個每線程計數器:
class ThreadTask implements Runnable {
private int counter = 0;
private int id;
public ThreadTask(int id) { this.id = id; }
public void run() {
while(counter < 500) {
counter++;
System.out.println("T" + id + " " + counter);
}
}
}
...
new Thread(new ThreadTask(0)).start();
new Thread(new ThreadTask(1)).start();
不具有實際的問題....
我想你可以啓動多個線程,並讓他們訪問synchonised printCounter方法。
喜歡的東西
public class MyRunnable implemetns Runnable {
private SharedObject o
public MyRunnable(SharedObject o) {
this.o = o;
}
public void run() {
o.printCounter();
}
}
然後開始你可以做
new Thread(new MyRunnable()).start();
new Thread(new MyRunnable()).start();
等
然後在您的共享對象方法,你想有保存,您可以打印一個變量法。這種方法也可以增加計數器。
雖然線程調度程序不保證線程何時運行,但請注意。
你還沒有真正問過任何特定的東西。如果你只是尋找一個非線程安全的計數器的一般例子是跨越兩個或多個線程共享的,在這裏你去:
public class Counter extends Thread {
private static int count = 0;
private static int increment() {
return ++count; //increment the counter and return the new value
}
@Override
public void run() {
for (int times = 0; times < 1000; times++) { //perform 1000 increments, then stop
System.out.println(increment()); //print the counter value
}
}
public static void main(String[] args) throws Exception {
new Counter().start(); //start the first thread
new Counter().start(); //start the second thread
Thread.sleep(10000); //sleep for a bit
}
}
您已經發布了一個「我想要」,但毫無疑問呢。當然你已經閱讀過關於線程的教程,對吧?你堅持什麼具體步驟? –
並排啓動線程。對於計數器1-500,較高優先級的線程應該比較慢的優先級線程完成更快。 – Sourav
學習的最好方法就是開始做。簡單的多線程代碼有數百萬個例子,所以我會從其中的一些開始。 –