使用Runnable实现多线程
1. 定义一个共享资源类Resource,资源类里面:
(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 i=0; i<50; 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();
原文地址:https://blog.csdn.net/weixin_53432918/article/details/134676059
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_4615.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。