多线程数据共享:
1)多个线程执行代码相同,可以使用同一个Runable对象,该对象中保存了共享数据,例如:卖票系统。
2)如果多个线程执行的代码不同,这时需要不同的Runable对象,两种方法:
1.使用一个对象将共享数据封装起来,再将该对象传递给所有的Runable对象,每个线程对共享数据的操作也交由该对象去完成。这样针对该共享数据的所有操作都可以实现互斥。
2.将所有的Runable对象作为一个类的内部类,而共享数据作为该类的成员变量,共享数据的操作方法也交由外部类来完成。内部类可以访问外部类的成员变量与方法,从而实现数据共享。
3.以上两种方式的组合,共享数据和其操作方法由对象封装,而Runable对象作为其成员变量或方法中的局部变量。
总之,要同步互斥几段不同的代码,最好将其放在不同的方法中,并使用一个类来封装他们,这样比较容易实现线程间的同步互斥与通信。
|
|