Java基础——多个线程共享数据
2013-10-22 20:24
381 查看
1,当多个线程需要操作同一个数据时(例如:火车站窗口卖票,有窗口在售票,有窗口在退票,他们操作的是同一堆票)
由于这里在做两种不同的操作,因此一个run()方法难免会使代码变得复杂,因此我们在MulitiThread中定义两个内部类实现runnable接口,分别进行不同的操作:
由于这里在做两种不同的操作,因此一个run()方法难免会使代码变得复杂,因此我们在MulitiThread中定义两个内部类实现runnable接口,分别进行不同的操作:
public class MultiThreadShareData { public static void main(String[] args) { Data data = new Data(100); new Thread(new IncRunnable(data)).start(); new Thread(new DecRunnable(data)).start(); new Thread(new DecRunnable(data)).start(); } private static synchronized void increase(Data data) { data.inc(); } private static synchronized void decrease(Data data) { data.dec(); } static class IncRunnable implements Runnable { private Data data; public IncRunnable(Data data) { this.data = data; } @Override public void run() { while (true) { try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } increase(data); System.out.println("inc " + data); } } } static class DecRunnable implements Runnable { private Data data; public DecRunnable(Data data) { this.data = data; } @Override public void run() { while (true) { try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } decrease(data); System.out.println("Dec " + data); } } } } class Data { public int data; public Data(int data) { this.data = data; } public void inc() { this.data++; } public void dec() { this.data--; } @Override public String toString() { return " " + data; } }
相关文章推荐
- Java基础——ThreadLocal实现线程范围内的数据共享
- Java基础——线程范围内的共享数据概念和作用
- Java基础加强 线程范围内数据共享设计模式
- Java基础:多线程之线程范围内的数据共享ThreadLocal
- Java基础知识强化102:线程间共享数据
- java基础--线程04--多个线程访问共享对象和数据的方式
- java 线程间数据共享和android 线程间数据共享异同
- java多线程学习-多个线程访问对象共享数据的方式
- Java并发05---线程范围内的共享数据
- Java多个线程之间处理共享数据的方式
- Java多个线程之间处理共享数据的方式
- 黑马程序员——Java基础---线程的另一个总结(4)--线程通信(互斥),线程范围的共享变量
- java线程当中 sleep() join() yield()方法的简单比较以及如何保护共享数据介绍
- java并发-多线程之多个线程之间共享数据(6)
- 【Java多线程与并发库】7.多个线程之间共享数据的方式探讨
- Java线程同步锁解决共享数据安全
- java线程范围内的数据共享
- 【java并发】线程范围内共享数据
- java项目——java中线程共享数据同步解决办法
- java基础--线程03--实现线程范围内的共享变量