Modifique su código y reordene las ejecuciones de la siguiente manera. Debería funcionar bien:
Statement statement = connection.createStatement();
statement.execute("insert into student values (3,'kamal')");
connection.commit();
Statement statement1 = connection1.createStatement();
statement1.execute("delete from student where student_id = 3");
connection1.commit();
El problema es que la instrucción de inserción ejecutada anteriormente aún no está confirmada y mantiene el bloqueo en la tabla cuando intenta ejecutar una nueva declaración de eliminación creando una situación de interbloqueo dentro de la base de datos.