多线程同步

package thread;
/**
*    
* synchronized关键字实现多线程同步
*(1)静态变量为全部对象共享,能够对其加锁,实如今同步
*(2)静态方法加锁,锁住的是类,也可实现同步
*/

public class PrintNum implements Runnable
{
   private int id;
    
   private static Object lock = new Object();

   public PrintNum( int id)
  {
     this.id = id;
  }

//  方法1:对静态变量加锁
//  public void run()
//  {
//
//     synchronized (lock)
//     {
//      for (int i = 0; i < 100; i++)
//      {
//
//        System.out.println("Thread-" + id + ":" + i);
//        }
//    }
//
//  }
   //方法2:对静态方法加锁
   public     void run()
  {
      taskHandler(id);
  }
   synchronized public static void taskHandler( int id)
  {
     for ( int i = 0; i < 100; i++)
    {

      System.out.println( "Thread-" + id + ":" + i);
      }
  }
   public static void main(String args[])
  {

     for ( int i = 0; i < 10; i++)
    {
       new Thread( new PrintNum(i)).start();
       //the flowing code just for test
       for( int j = 1;j<10;j++)
      {
         if(j==9)
        {
          System.out.println( "wait me for a while...");         }       }     }     } }
相关文章
相关标签/搜索