多线程通信的小例子

要求:一个线程读数据,一个线程“取”数据,交替进行。
知识点:
1,多线程的等待唤醒机制
2,线程同步是这个机制的前提。
3,弄清楚为什么要加上this………….this.wait() this.notify()
4,wait()是原来的线程变成等待状态,notify()是唤醒内存线程池中第一个等待的线程。
5,等待唤醒机制要以同步为前提。原因:因为同步才会有监视器(或者说是锁,锁旗标),而线程的等待唤醒机制需要监视器才能对线程进行操作。
6,为什么这些操作线程的方法要定义在Object类中呢?
原因:同一个锁才能有同一个唤醒等待机制,而锁可以是任意对象,所以用Object。

package 多线程;

public class resources {


    private String name;
    private String sex;
    private boolean flag = false;
    public synchronized void set(String name,String sex)
    {   
        if(flag)//==true;
        try{this.wait();}catch(Exception e){}
        this.name = name;
        this.sex =sex;
        flag= true;
        this.notify();
    }
    public synchronized void get()
    {
        if(!flag)//==false;
        try{this.wait();}catch(Exception e){}
        System.out.println(name+"....."+sex);
        flag =false;
        this.notify();
    }

}
package 多线程;

public class Input implements Runnable{
    private resources res;
    private int n=1;
    Input(resources res)
    {
        this.res =res;
    }
    public void run()
    {
        while (true)
        {       
        if(n==0)            
        res.set ("欧阳无敌" ,"男");      

        else        
        res.set ("Alina", "famale");

        n=(n+1)%2;          
        }

    }


}

package 多线程;

public class Output implements Runnable
{
private resources res;
public Output(resources res)
{
this.res = res;
}
public void run()
{

    while(true)
    {       
     res.get(); 
    }
}

}

package 多线程;

public class 多线程通信小例子 {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        resources res = new resources();


        new Thread(new Input(res)).start();
        new Thread(new Output(res)).start();

        /*Input in = new Input(res);
        Output out = new Output(res);
        Thread t1 = new Thread(in);
        Thread t2 = new Thread(out);
        t1.start();
        t2.start();
        */

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值