JavaWork_线程同步及并发控制的问题

来源:互联网 发布:2015美国对外贸易数据 编辑:程序博客网 时间:2024/05/17 22:27
JavaWork_线程同步及并发控制的问题
[%=@count%]票 [[%=@percent%]%]
提交
//模拟售票系统,4个窗口同时售100张票(index)
//1)使用new Thread()创建线程
class ThreadDemo1
{
 public static void main(String[] args)
 {
  new TestThread().start();
  new TestThread().start();
  new TestThread().start();
  new TestThread().start();
 }
}

class TestThread extends Thread
{
 int index = 100;
 public void run()
 {
  wile(index >= 100)
   System.out.println("Run" + Thread.currentThread().getName() + "is Soing " + index--);
 }
}
//2)
class TreadDemo1
{
 public static void main(String[] args)
 {
  TestThread tt = new TestThread();
  tt.start();
  tt.start();
  tt.start();
  tt.start();
 }
}

class TestThread extends Thread
{
 int index = 100;
 public void run()
 {
  while(index >= 0)
  System.out.println("Run" + Thread.currentThread().getName() + "is Soling " + index--);
 }
}

/////////////////////////////////////////
class ThreadDemo1
{
 public static void main(String[] args)
 {
  TestThread tt = new TestThread();
  new Thread(tt).start();
  new Thread(tt).start();
  new Thread(tt).start();
  new Thread(tt).start();
 }
}

class TestThread implements Runnable
{
 int index = 100;
 public void run()
 {
  while(index >= 0)
   System.out.println("Run" + Thread.currentThread().getName() + "is Soling " + index--);
 }
}



//////////////////////线程并发控制问题
class TreadDemo1
{
 public static void main(String[] args)
 {
  TestThread tt = new TestThread();
  new Thread(tt).start();
  new Thread(tt).start();
  new Thread(tt).start();
  new Thread(tt).start();
 }
}

class TestThread implements Runnable
{
 int index = 100;
 String str = new String("");
 public void run()
 {
  
   while(true)
   {
    synchronized(str)//保持线程原子性,参数为任意对象
    {
     if (index > 0)
     {
      try{Thread.sleep(10);}catch(Exception e){}
      System.out.println("Run" + Thread.currentThread().getName() + "is Soling " + index--);
       } 
    }
   }
  
 }
}
//一般情况下不要使用并发控制,会牺牲cpu为代价