У меня есть следующий код, и я экспериментирую с синхронизацией. Я использовал одно создание потока с использованием удлинительной резьбы t2. И я также создаю один поток через runnable. Тем не менее, я не могу заставить рабочий поток работать.threads runnable vs extends thread
Что не так? Я havent практиковал 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);'. Конечная скобка ')' отсутствует. И что такое ошибка? –