我有下面的代碼,我正在試驗同步。 我已經使用了使用擴展線程t2創建的一個線程。我也通過runnable創建一個線程。然而,我似乎無法得到可運行的線程工作。線程可運行vs擴展線程
出了什麼問題?我還沒有練習java 6個月,所以重新回到了事物的擺動中。
package threadingchapter4;
class Table {
void printTable(int n) {
synchronized (this) {// synchronized block
for (int i = 1; i <= 5; i++)
{
System.out.println(n * i + " "+ Thread.currentThread().getName() + " ("
+ Thread.currentThread().getId());
try {
Thread.sleep(400);
} catch (Exception e) {
System.out.println(e);
}
}
}
}// end of the method
}
class t1 implements Runnable {
Table t;
t1(Table t) {
this.t = t;
}
public void run() {
t.printTable(5);
}
}
class MyThread2 extends Thread {
Table t;
MyThread2(Table t) {
this.t = t;
}
public void run() {
t.printTable(100);
}
}
public class TestSynchronizedBlock1 {
public static void main(String args[]){
Table obj = new Table();//only one object
Thread t1 = new Thread(obj);
MyThread2 t2=new MyThread2(obj);
t1.start();
t2.start();
}
}
你的格式和命名約定是可怕的。而你的代碼不能編譯。而且你沒有在任何地方使用你的't1'類。 – shmosel
請至少格式化您的代碼。請參閱[如何格式化代碼](http://meta.stackexchange.com/a/22189/340735) –
您應該使用更好的命名約定。另外在'Thread t1 = new Thread((obj);')時出現編譯錯誤,缺少一個末端括號'''。錯誤究竟是什麼? –