多线程编程<一>
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 }