900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java的多线程访问共享变量_java多线程通信之共享变量

java的多线程访问共享变量_java多线程通信之共享变量

时间:2018-07-21 19:27:56

相关推荐

java的多线程访问共享变量_java多线程通信之共享变量

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

publicstaticvoidmain(String[]args){

Mythread1mythread=newMythread1();

newThread(mythread).start();

newThread(mythread).start();

newThread(mythread).start();

newThread(mythread).start();

}

}

/*实现Runnable接口*/

classMythread1implementsRunnable{

intindex=0;

publicsynchronizedvoidrun(){

while(true)

System.out.println(Thread.currentThread().getName()+"isrunningandtheindexis"+index++);

}

}

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

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

publicclassInnersharethread{

publicstaticvoidmain(String[]args){

Mythreadmythread=newMythread();

mythread.getThread().start();

mythread.getThread().start();

mythread.getThread().start();

mythread.getThread().start();

}

}

/**

*通过内部类实现线程的共享变量

*

*/

classMythread{

intindex=0;

privateclassInnerThreadextendsThread{

publicsynchronizedvoidrun(){

while(true){

System.out.println(Thread.currentThread().getName()

+"isrunningandindexis"+index++);

}

}

}

publicThreadgetThread(){

returnnewInnerThread();

}

}

参考文章:

原文:http://tianxingzhe./3390077/1693465

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。