No.1编写一个打印机类
写两个方法
1 public class Printer { 2 3 public void print1() 4 { 5 6 System.out.print("微"); 7 System.out.print("冷"); 8 System.out.print("的"); 9 System.out.print("雨"); 10 System.out.println(); 11 } 12 public void print2() 13 { 14 15 System.out.print("好"); 16 System.out.print("人"); 17 System.out.println(); 18 19 20 } 21 }
目的:为了使两个线程执行该类中的两个方法
线程一:
public class MyThread extends Thread { public static Printer p1; @Override public void run() { for (int i = 1; i <=500; i++) { p1.print1(); } }
线程二:
public class MyThread2 implements Runnable{ public static Printer p2; @Override public void run() { for (int i = 1; i <=500; i++) { p2.print2(); } } }
Test类中的方法调用
public class Test { public static void main(String[] args) { Printer p=new Printer(); MyThread t1=new MyThread(); t1.p1=p; t1.start(); MyThread2 t2=new MyThread2(); t2.p2=p; Thread t3=new Thread(t2); t3.start(); } }
则会出现以下情况:因为程序员不能手动干预cpu分配线程资源
解决方法:加上同步锁,使当一个线程执行完之后另一个线程才有执行的权利
public class Printer { public void print1() { synchronized (this) { System.out.print("微"); System.out.print("冷"); System.out.print("的"); System.out.print("雨"); System.out.println(); } } public void print2() { synchronized (this) { System.out.print("好"); System.out.print("人"); System.out.println(); } } }
解决完毕!!!!!!!!!