publicclass SerializationDeadlock { publicstaticvoid main(final String[] args) throws Exception { // Test for Vector serialization deadlock final Vector<Object> v1 = new Vector<>(); final Vector<Object> v2 = new Vector<>(); final TestBarrier testStart = new TestBarrier(3);
// Populate the vectors so that they refer to each other
v1.add(testStart);
v1.add(v2);
v2.add(testStart);
v2.add(v1);
final CyclicBarrier testEnd = new CyclicBarrier(3); final TestThread t1 = new TestThread(v1, testEnd); final TestThread t2 = new TestThread(v2, testEnd);
t1.start();
t2.start();
// Wait for both test threads to have initiated serialization // of the 'testStart' object (and hence of both 'v1' and 'v2')
testStart.await();
// Wait for both test threads to successfully finish serialization // of 'v1' and 'v2'.
System.out.println("Waiting for Vector serialization to complete ...");
System.out.println("(This test will hang if serialization deadlocks)");
testEnd.await();
System.out.println("Test PASSED: serialization completed successfully");
privatestatic String getErrorText(final List<Exception> exceptions) { final StringWriter sw = new StringWriter(); final PrintWriter pw = new PrintWriter(sw);
pw.println("Test ERROR: Unexpected exceptions thrown on test threads:"); for (Exception exception : exceptions) {
pw.print("\t");
pw.println(exception); for (StackTraceElement element : exception.getStackTrace()) {
pw.print("\t\tat ");
pw.println(element);
}
}
pw.close(); return sw.toString();
}
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.