码迷,mamicode.com
首页 > 编程语言 > 详细

java多线程通信之共享变量

时间:2015-09-10 17:34:59      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:共享变量


(1)当访问共同的代码的时候:可以使用同一个Runnable对象这个Runnable对象中有这个共享数据,比如卖票系统就可以这么做。或者这个共享数据封装在一个对象当中,然后对这个对象加锁,也可以实现数据安全访问。

public class Interfacaesharethread {
    public static void main(String[] args) {
        Mythread1 mythread = new Mythread1();
        new Thread(mythread).start();
        new Thread(mythread).start();
        new Thread(mythread).start();
        new Thread(mythread).start();
    }
}
 
/* 实现Runnable接口 */
class Mythread1 implements Runnable {
    int index = 0;
 
    public synchronized void run() {
        while (true)
            System.out.println(Thread.currentThread().getName() + "is running and the index is " + index++);
    }
}


(2)当各个线程访问的代码不同时:这时候要使用不同的Runnable对象,

将Runnable对象作为某一个类中的内部类,共享数据作为这个外部类的成员变量,每个线程对共享数据的访问也交给外部类的方法,比便对共享数据的互斥和通信。Runnable对象调用外部类的操作这个共享数据的方法。


public class Innersharethread {  
    public static void main(String[] args) {  
        Mythread mythread = new Mythread();  
        mythread.getThread().start();  
        mythread.getThread().start();  
        mythread.getThread().start();  
        mythread.getThread().start();  
    }  
} 

/** 
 * 通过内部类实现线程的共享变量 
 * 
 */ 
class Mythread {  
    int index = 0;  
   
    private class InnerThread extends Thread {  
        public synchronized void run() {  
            while (true) {  
                System.out.println(Thread.currentThread().getName()  
                        + "is running and index is " + index++);  
            }  
        }  
    }  
   
    public Thread getThread() {  
        return new InnerThread();  
    }  
}


参考文章:

http://my.oschina.net/u/248570/blog/53226





 

本文出自 “一无所有-天行者” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1693465

java多线程通信之共享变量

标签:共享变量

原文地址:http://tianxingzhe.blog.51cto.com/3390077/1693465

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!