使用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进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注