1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > linux多线程访问共享资源 多个线程访问共享对象和数据

linux多线程访问共享资源 多个线程访问共享对象和数据

时间:2021-09-02 15:24:06

相关推荐

linux多线程访问共享资源 多个线程访问共享对象和数据

多个线程访问共享对象和数据有很多方式,但是可以分为两大类:1.多线程执行代码相同的。2.多线程执行代码不同的

对于多线程执行代码相同的情况来说:

1)使用同一个Runnable对象,在new Thread的时候放入相同的这个对象

publicstaticvoidmain(String[]args){

Runnabler=newRunnable(){

intnum=100;

@Override

publicsynchronizedvoidrun(){

System.out.println(++num+"==add");

}

};

Threadt1=newThread(r);

Threadt2=newThread(r);

Threadt3=newThread(r);

t1.start();

t2.start();

t3.start();

}

对于多线程代码不同的情况来说:

1)将需要共享的对象或者数据放入另一个对象中,这个对象对外提供对其操作的方法,由不同的线程调用。

classNumber{

intnum=100;

publicintadd(){

return++num;

}

publicintdel(){

return--num;

}

}

Runnable对象中使用同一个Number对象

publicstaticvoidmain(String[]args){

finalNumbernum=newNumber();

RunnablerAdd=newRunnable(){

@Override

publicsynchronizedvoidrun(){

System.out.println(num.add()+"==add");

}

};

RunnablerDel=newRunnable(){

@Override

publicsynchronizedvoidrun(){

System.out.println(num.del()+"==del");

}

};

Threadt1=newThread(rAdd);

Threadt2=newThread(rDel);

Threadt3=newThread(rAdd);

t1.start();

t2.start();

t3.start();

}

2)将Runnable写成内部类的形式,然后将需要共享的对象和数据写成外部类的成员变量。

classNumber{

intnum=100;

Runnabler_add=newRunnable(){

@Override

publicsynchronizedvoidrun(){

System.out.println(++num+"==add");

}

};

Runnabler_del=newRunnable(){

@Override

publicsynchronizedvoidrun(){

System.out.println(--num+"==del");

}

};

}

然后通过调用Number对象中的内部类对象来实现。

publicstaticvoidmain(String[]args){

Numbern=newNumber();

Threadt1=newThread(n.r_add);

Threadt2=newThread(n.r_del);

t1.start();

t2.start();

}

------------------------------------------------------------------------------

还有一种方法简单粗暴,就是把需要共享的对象和数据用static修饰。

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