Object arr3[]=list1.toArray();
String common[]=new String[arr3.length];
for (int i=0;i<arr3.length;i++)
{
common[i]=(String)arr3[i];
}
Вам нужно подождать, пока ваш поток завершит свою работу, поэтому вы должны использовать Thread.join ():
from threading import Thread
def myfunction(mystring,*args):
print mystring
if __name__ == '__main__':
try:
t = Thread(None,myfunction,None,('MyStringHere',1))
t.start()
t.join()
except Exception as errtxt:
print errtxt
Проблема в том, что ваш основной поток завершился до того, как новый поток успеет закончить. Решение состоит в том, чтобы дождаться вашего основного потока.
import thread, time
def myfunction(mystring,*args):
print mystring
if __name__ == '__main__':
try:
thread.start_new_thread(myfunction,('MyStringHere',1))
except Exception, errtxt:
print errtxt
time.sleep(5)
В качестве примечания, вы, вероятно, захотите использовать модуль потоковой передачи. Ваш основной поток будет ждать закрытия всех этих типов потоков перед завершением:
from threading import Thread
def myfunction(mystring,*args):
print mystring
if __name__ == '__main__':
try:
Thread(target=myfunction, args=('MyStringHere',1)).start()
except Exception, errtxt:
print errtxt
Когда я запускал этот код в Python 2.6, он работал, возможно ли, что у вас уже есть открытые потоки, которые заблокированы для функции? Я рекомендую полностью закрыть Python, проверить ваши запущенные процессы, чтобы убедиться, что ничего из ваших не запущено, и повторить попытку.
Я пробовал это в Python 2.5 на Mac, после изменения
except Exception as errtxt:
на
except Exception, errtxt:
Программа не генерировала исключение, но и ничего не печатала. Не уверен, что это полезно, но мне кажется любопытным ...