同步方法的几种常见写法
来源:互联网 发布:周冬雨怎么变白的知乎 编辑:程序博客网 时间:2024/05/02 11:49
同步的位置分三种:(1)静态方法的同步,(2)非静态方法的同步,(3)代码块的同步
静态方法的同步:
public static synchronized void check(){ int i =0; while(i>100){ try { System.err.println("栈满了"); SynchronizedStack.class.wait();// 等待,直到有数据出栈 } catch (InterruptedException e) { Thread.currentThread().interrupt(); e.printStackTrace(); } } i++; System.out.println("正在使用第"+i+"个"); }
非静态方法的同步
public synchronized char pop() { while (index == 0) { try { System.err.println("栈空了"); this.wait();// 等待,直到有数据出栈 } catch (InterruptedException e) { Thread.currentThread().interrupt(); e.printStackTrace(); } } index--; // 指针向下移动 char ch = data[index]; this.notify(); // 通知其它线程把数据入栈 return ch; }
代码块的同步:(1)
public void check1(int i){ synchronized(this){ while(i>100){ try { System.err.println("栈满了"); SynchronizedStack.class.wait();// 等待,直到有数据出栈 } catch (InterruptedException e) { Thread.currentThread().interrupt(); e.printStackTrace(); } } i++; System.out.println("正在使用第"+i+"个"); SynchronizedStack.class.notify(); } }
同步代码块:(2)
</pre><pre name="code" class="java">public void check2(int i){ synchronized(SynchronizedStack.class){ while(i>100){ try { System.err.println("栈满了"); SynchronizedStack.class.wait();// 等待,直到有数据出栈 } catch (InterruptedException e) { Thread.currentThread().interrupt(); e.printStackTrace(); } } i++; System.out.println("正在使用第"+i+"个"); SynchronizedStack.class.notify(); } }
同步代码块(3)
public static void check2(int i){ synchronized(SynchronizedStack.class){ while(i>100){ try { System.err.println("栈满了"); SynchronizedStack.class.wait();// 等待,直到有数据出栈 } catch (InterruptedException e) { Thread.currentThread().interrupt(); e.printStackTrace(); } } i++; System.out.println("正在使用第"+i+"个"); SynchronizedStack.class.notify(); } }
1 0
- 同步方法的几种常见写法
- WSGI应用常见的几种写法
- 单例常见的几种写法
- JavaScript函数的常见几种写法
- TestNG DataProvider的几种方法写法
- TestNG DataProvider的几种方法写法
- 几种常见的数据库连接的URL写法
- JDBC中URL的几种常见写法...
- js面向对象的几种常见写法
- 常见多媒体播放器的几种写法
- 归纳下js面向对象的几种常见写法
- 常见几种导致内存泄露的不良写法
- ajax的常见几种写法以及用法
- js面向对象的几种常见写法
- HQL的几钟常见写法
- 实现线程同步的几种方法
- C#线程同步的几种方法
- C#线程同步的几种方法
- android 禁止横竖版切换
- 判断是否摄像机可以看到
- python3 中的 maketrans()
- 华为OJ之N皇后问题(C++代码)
- 欢迎使用CSDN-markdown编辑器
- 同步方法的几种常见写法
- 详解ICMP协议
- [TZ]内存与IO访问(4)-IO内存静态映射
- android中延迟执行某个任务
- HTML DOM 节点
- LeetCode:Search Insert Position
- 5 Ways of Creating a Stream in Java 8
- HTML DOM 方法
- 12.10 android双向通话录音,ClipData监听,coding.net pymongo连接使用mongo