日期:2014-05-20  浏览次数:20716 次

关于线程编程的问题
http://yulin10.bokee.com/2742164.html

随便看个例子:
方法一:继承   Thread   类,覆盖方法   run(),我们在创建的   Thread   类的子类中重写   run()   ,加入线程所要执行的代码即可。下面是一个例子:
  
  public   class   MyThread   extends   Thread   {
  
  int   count=   1,   number;
  
  public   MyThread(int   num)   {
  
  number   =   num;
  
  System.out.println( "创建线程   "   +   number);
  
  }
  
  public   void   run()   {
  
  while(true)   {
  
  System.out.println( "线程   "   +   number   +   ":计数   "   +   count);
  
  if(++count==   6)   return;
  
  }
  
  }
  
  public   static   void   main(String   args[])   {
  
  for(int   i   =   0;   i   〈   5;   i++)   new   MyThread(i+1).start();
  
  }
  
  }
我想问的是,它这里起了五个线程,但每个都是一个新的MyTread,即在main中的for中创建了每一个不同的对象。这些对象是不会共享它们的数据的,那如果我的程序是每个线程都都产生一个新的对象,那会存在同步的问题吗?而线程中讲的同步的问题都是一个线程间共享数据的情况下吧?

------解决方案--------------------
上面一个有六个线程,还有一个main 线程,同步的意思是指多个线程访问共享同一个数据,
这六个线程得到的执行机会都是一样的,cpu在这六个线程之间切换,上面的例子不存在同步问题。
“那如果我的程序是每个线程都都产生一个新的对象”这句话不是很理解
------解决方案--------------------
面向的问题不同,解决问题的逻辑也不同了,
如果是模似100张火车票由5个售票窗口同时出售的话
这样就需要线程同步了,
------解决方案--------------------
不会实现共享资源,因为你创建了5个Thread,每个Thread各有一份拷贝,你可以使用内部类或者实现Runnable来实现共享资源(同步)
------解决方案--------------------
楼主可以把count声明成static的试试.  
public class MyThread extends Thread {
  
  int count= 1, number;