1 /**
2 * 通过制定synchronized限定符,可以同步用于对象的一个或多个方法。当调用同步的方法时,对象会被加锁,直到方法返回。
3 * @author Burke
4 *
5 */
6 public class SyncDemo {
7 public static void main(String[] args) {
8 Prompter p = new Prompter(1);
9
10 UsePrompter promptA = new UsePrompter(p, "One Two Three Four");
11 UsePrompter promptB = new UsePrompter(p, "Left Right Up Down");
12 }
13 }
14
15 class UsePrompter implements Runnable{
16 Prompter prompter;
17 String message;
18
19 public UsePrompter(Prompter p, String msg) {
20 prompter = p;
21 message = msg;
22
23 new Thread(this).start();//利用此对象建立线程。
24 }
25
26 @Override
27 public void run() {//
28 prompter.display(message);//
      //同步块
         /*synchronized (prompter) {
            prompter.display(message);
          }*/
29 }
30 }
31
32 class Prompter{
33 int delay;
34
35 public Prompter( int d) {
36 if(d <= 0){
37 d = 1;
38 }
39 delay = d;
40 }
41
42 synchronized void display(String msg){
43 for(int i=0; i < msg.length(); i++){
44 System.out.print(msg.charAt(i));
45
46 if(Character.isWhitespace(msg.charAt(i))){
47 try {
48 Thread.sleep(delay*1000);
49 } catch (InterruptedException e) {
50 return;
51 }
52 }
53 }
54 System.out.println();
55 }
56 }

最新文章

  1. JS trim()方法使用
  2. VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)
  3. HTML5如何播放本地文件
  4. Hbase在的应用经验的统计
  5. js全选与反选
  6. 通过GPLOT过程制作图形
  7. Chapter 4 Invitations——2
  8. 6.context对象
  9. angualrjs 文本框去掉表情
  10. BZOJ2594 [Wc2006]水管局长数据加强版 LCT kruskal
  11. git bash 命名
  12. 微信小程序 发现之旅(二)—— 自定义组件
  13. android 修改listview item view 的方法
  14. Ogre 监听类与渲染流程
  15. 3.4 复杂的x86指令举例
  16. BootStrap 4正式版发布(原文翻译)
  17. PHP5下WSDL,SOAP调用实现过程
  18. 11月16host文件
  19. 我的第一个博客&amp;GuiHub简单练习
  20. Spring MVC中如何解决POST请求中文乱码问题,GET的又如何处理呢

热门文章

  1. ES6 模版字符串及常用的es6扩展方法
  2. 【动态规划】石子合并 luogu-1880
  3. nmcli命令行修改网络连接名称
  4. sentry_sdk 错误日志监控 Flask配置
  5. 解决Docker安装慢
  6. 电脑软件安装过程文档.BA
  7. Android 键盘属性
  8. Spring WebFlux 基础教程:WebSocket 使用
  9. JVM 常用监控工具
  10. C++ 继承方式 //语法:class 子类 :继承方式 父类 //继承方式 三种: //1.公共继承 //2.保护继承 //3.私有继承