多线程

来源:互联网 发布:idg 知乎 编辑:程序博客网 时间:2024/05/01 18:03

实现方式

  • 覆盖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);        }    }}
0 0
原创粉丝点击