内江市建设信息网站,免费windows10云主机下载,开发一个手游游戏要多少钱,中国建设劳动学会网站多个线程访问共享对象和数据有很多方式#xff0c;但是可以分为两大类#xff1a;1.多线程执行代码相同的。2.多线程执行代码不同的对于多线程执行代码相同的情况来说#xff1a;1)使用同一个Runnable对象#xff0c;在new Thread的时候放入相同的这个对象public static vo…多个线程访问共享对象和数据有很多方式但是可以分为两大类1.多线程执行代码相同的。2.多线程执行代码不同的对于多线程执行代码相同的情况来说1)使用同一个Runnable对象在new Thread的时候放入相同的这个对象public static void main(String[] args) {Runnable r new Runnable() {int num 100;Overridepublic synchronized void run() {System.out.println(num add);}};Thread t1 new Thread(r);Thread t2 new Thread(r);Thread t3 new Thread(r);t1.start();t2.start();t3.start();}对于多线程代码不同的情况来说1)将需要共享的对象或者数据放入另一个对象中这个对象对外提供对其操作的方法由不同的线程调用。class Number {int num 100;public int add() {return num;}public int del() {return --num;}}Runnable对象中使用同一个Number对象public static void main(String[] args) {final Number num new Number();Runnable rAdd new Runnable() {Overridepublic synchronized void run() {System.out.println(num.add() add);}};Runnable rDel new Runnable() {Overridepublic synchronized void run() {System.out.println(num.del() del);}};Thread t1 new Thread(rAdd);Thread t2 new Thread(rDel);Thread t3 new Thread(rAdd);t1.start();t2.start();t3.start();}2)将Runnable写成内部类的形式然后将需要共享的对象和数据写成外部类的成员变量。class Number{int num 100;Runnable r_add new Runnable() {Overridepublic synchronized void run() {System.out.println(numadd);}};Runnable r_del new Runnable() {Overridepublic synchronized void run() {System.out.println(--numdel);}};}然后通过调用Number对象中的内部类对象来实现。public static void main(String[] args) {Number n new Number();Thread t1 new Thread(n.r_add);Thread t2 new Thread(n.r_del);t1.start();t2.start();}------------------------------------------------------------------------------还有一种方法简单粗暴就是把需要共享的对象和数据用static修饰。