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中创建了每一个不同的对象。这些对象是不会共享它们的数据的,那如果我的程序是每个线程都都产生一个新的对象,那会存在同步的问题吗?而线程中讲的同步的问题都是一个线程间共享数据的情况下吧?
方法一:继承 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中创建了每一个不同的对象。这些对象是不会共享它们的数据的,那如果我的程序是每个线程都都产生一个新的对象,那会存在同步的问题吗?而线程中讲的同步的问题都是一个线程间共享数据的情况下吧?
这六个线程得到的执行机会都是一样的,cpu在这六个线程之间切换,上面的例子不存在同步问题。
“那如果我的程序是每个线程都都产生一个新的对象”这句话不是很理解
class T{
private String s;
T(String ss) {
//ss深copy到s
}
public static void main(String args[]) {
while (true) {
String s = recvData()
new T(s).start();
}
}
这样的话不是每个线程都是作用于一个不同的对象里的吗,那每个对象的数据也都是独立的。那怎么会共享数据呢。我把main取到的数据都复制给线程,让线程自已处理去。
public class MyThread extends Thread {
int count= 1, number;