Java基础教程(第7章).pptVIP

  • 0
  • 0
  • 约5.68千字
  • 约 45页
  • 2019-08-10 发布于广东
  • 举报
7.6 多线程的互斥与同步 经常有一些同时运行的线程需要共享数据,此时就需考虑其他线程的状态和行为,否则就不能保证程序的运行结果的正确性。 7.6.1 临界资源问题 下面是一个堆栈的类定义: class stack { int index = 0; // 堆栈指针 char[] data = new char[6]; // 堆栈空间 public void push(char c) { // 压栈操作 data[index] = c; // 数据入栈 index++; // 指针向上移动一位 } public char pop() { // 出栈操作 index--; // 指针向下移动一位 return data[index]; // 数据出栈 } } p q r ① ② 7.6.2 互斥锁或对象锁 为解决操作的不完整性问题,引入了对象互斥锁,来保证共享数据操作的完整性。 每个对象都对应于一个可称为“互斥锁”的标记,互斥锁可以保证在任一时刻,只能有一个线程访问该对象。 Synchronized(object o){ 需要一次执行完的语句块 } public void push(char c) { synchronized (this) { data[idx] = c; idx++; } }

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档