多线程编程<一>
2024-10-19 10:01:14
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 }
最新文章
- JS trim()方法使用
- VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)
- HTML5如何播放本地文件
- Hbase在的应用经验的统计
- js全选与反选
- 通过GPLOT过程制作图形
- Chapter 4 Invitations——2
- 6.context对象
- angualrjs 文本框去掉表情
- BZOJ2594 [Wc2006]水管局长数据加强版 LCT kruskal
- git bash 命名
- 微信小程序 发现之旅(二)—— 自定义组件
- android 修改listview item view 的方法
- Ogre 监听类与渲染流程
- 3.4 复杂的x86指令举例
- BootStrap 4正式版发布(原文翻译)
- PHP5下WSDL,SOAP调用实现过程
- 11月16host文件
- 我的第一个博客&;GuiHub简单练习
- Spring MVC中如何解决POST请求中文乱码问题,GET的又如何处理呢
热门文章
- ES6 模版字符串及常用的es6扩展方法
- 【动态规划】石子合并 luogu-1880
- nmcli命令行修改网络连接名称
- sentry_sdk 错误日志监控 Flask配置
- 解决Docker安装慢
- 电脑软件安装过程文档.BA
- Android 键盘属性
- Spring WebFlux 基础教程:WebSocket 使用
- JVM 常用监控工具
- C++ 继承方式 //语法:class 子类 :继承方式 父类 //继承方式 三种: //1.公共继承 //2.保护继承 //3.私有继承