山东网站建设公司哪家权威,什么是网络营销,洋县建设银行网站,设计网站考虑哪些因素使用Runnable实现多线程 1. 定义一个共享资源类Resource#xff0c;资源类里面#xff1a;
#xff08;1#xff09;共享资源的私有成员变量#xff0c;指明资源类的一些属性
#xff08;2#xff09;定义flag变量用于线程之间的协作
private boolean flag true;
资源类里面
1共享资源的私有成员变量指明资源类的一些属性
2定义flag变量用于线程之间的协作
private boolean flag true;
3定义同步方法使用synchronized关键字
1. 同步方法里使用flag变量来协调线程之间的交流
2. 使用Object类中的wait(), notify()方法来协调交流
public synchronized void add(){}
public synchronized void sub(){}
完整的代码如下
class Resource{private int num 0;private boolean flag true;public synchronized void add(){while(flag false){try{super.wait()}catch (InterruptedException e){}}this.num;flag false;super.motifyAll();}
} 2. 定义子类实现Runnable接口
1. 子类里面重写run方法
2. run方法中调用资源类中的同步方法
3. 有需要的话也可以写入构造函数
class Add implements Runnable{private Resource resource;public void run(){for(int i0; i50; i){this.resource.add();}}
} 3. 测试类
1. 创建资源类的实例化对象
Resource resource new Resource();
2. 实例化 实现接口的子类 的对象并作为参数定义新的线程对象使用start()方法来开启线程
分开写Add add1 new Add(resource);
Thread thread1 new Thread();
thread1.start();连写
new Thread(new Add(resource)).start();