实现方式
- 覆盖run方法
实现Runnable方法
Timer,TimerTask
- Synchronized
注意加锁的对象一定要是同一个,方法上加锁,相当于在this上加锁
子线程循环10次,接着主线程循环100,如此循环50次:
将相关联的方法放到同一个类中
class Business {
private boolean isMain = true;
public synchronized void sub(int j) {
while(!isMain) {
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for (int i = 5; i < 10; i++) {
System.out.println( "sub" + i + "of" + j);
}
System.out.println();
isMain = false;
this.notify();
}
public synchronized void main(int j) {
while(isMain) {
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for (int i = 0; i < 5; i++) {
System.out.println( "mian" + i + "of" + j);
}
System.out.println();
isMain = true;
this.notify();
}
}
public class ForThreadTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
final Business business = new Business();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i < 10; i++) {
business.sub(i);
}
}
}).start();
for (int j = 0; j < 5; j ++ ) {
business.main(j);
}
}
}