你可以给线程加个参数CounterThread(int i)
则启动10这样的线程就是:
while(int i=0;i<10;i++) {
CounterThread th = new CounterThread(i);
th.start();//这就成了
}
则启动10这样的线程就是:
while(int i=0;i<10;i++) {
CounterThread th = new CounterThread(i);
th.start();//这就成了
}
public void run(){
===========
===========
===========
}
}
。
。
abc a1=new abc();
a1.start();线程必须重载run方法,RUN既为线程的执行体
调用者通过调用继承Thread的类的start,将线程挂入线程队列,然后系统在获得控制权时,从队列中选取一个线程执行其run。所以不能重载start,而是应该重载run,在run中进行相应的操作。
循环;若非所有线程的start()方法都已被调用时,只是
简单地阻塞而已;
当最后一个线程被创建时,将此条件设为真即可。
synchronized private void populateTable() {
File workingDir = new File(dirName);
String[] listOfFiles = workingDir.list();
if (listOfFiles.length != 0) {
for (int i=0; i < listOfFiles.length; i++) {
if(! assignedWork.contains(listOfFiles[i])) {
newWork.addElement( listOfFiles[i] );
}
}
notifyAll();
}
}synchronized关键字用于上述函数的作用是什么?
for (int i=0; i < listOfFiles.length; i++) {
synchronized(WorkTable.Class()){
if(! assignedWork.contains(listOfFiles[i])) {
newWork.addElement( listOfFiles[i] );
}
}
}
不行吗?