私はコードを同期するためにjoinを使用しようとしています。ジョインが呼び出されると、親スレッドと子スレッドの両方で例外が発生する スレッド "thread3"の例外 スレッドの実行中の例外。Javaは私がjoinを呼び出すと、子スレッドと親スレッドで例外が発生します
スレッドはRuinableクラスで実行され、クラスが作成されるときにスレッドをパブリックメンバーに格納します。メインスレッドは、このパブリックメンバのjoinメソッドを呼び出します。
コードメインスレッドは、あなたがスレッドを作成しても、それを起動しないでください「メインスレッド」と呼ぶスニペットで
System.out.println(Thread.currentThread()+": waiting for 2 players");
do {
r=GetClient();
switch(r)
{
case 0: return; // exitvon a very bad error
}
} while(r==2);// loop if it was a timeout
cMyConnection thread = new cMyConnection("thread3", connection, mPlayerList, mPlayersMessages);
try {
thread.MyThread.join(); // call join
} catch (InterruptedException e) {
e.printStackTrace();
}
クラス
public class Cconnection implements Runnable {
Thread runner;
ReentrantReadWriteLock readWriteLock;
Lock read;
Lock write;
boolean StopFlag;
String header;
Socket connection;
ServerSocket server;
StringBuffer request;
OutputStream out;
InputStream in;
String ClientMessage;
public cUsers mPlayerList;
public cMessages mPlayersMessages;
public Thread MyThread;
public Cconnection(String threadName, Socket connection_in , cUsers PlayerList, cMessages PlayerMessages) {
connection=connection_in;
mPlayerList=PlayerList;
mPlayersMessages=PlayerMessages;
MyThread = new Thread(this, threadName); // (1) Create a new thread.
MyThread.start(); // (2) Start the thread.
}
投稿を修正してください... – L7ColWinters
stacktraceを含めてください。 – mre