关于线程编程的问题
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;