44import java .io .OutputStream ;
55import java .net .Socket ;
66import java .net .SocketException ;
7- import java .util .LinkedList ;
7+ import java .util .ArrayList ;
8+ import java .util .List ;
89import java .util .Timer ;
910import java .util .TimerTask ;
1011
1112class OutputStreamThread {
1213
1314 private final Client client ;
1415 private final Socket socket ;
15- private final LinkedList <Packet > packets = new LinkedList <>();
16+ private final List <Packet > packets = new ArrayList <>();
1617 private final Timer timer = new Timer ();
18+ private OutputStream finalOutputStream ;
1719
1820 public OutputStreamThread (final Client client ) {
1921 this .client = client ;
@@ -22,7 +24,7 @@ public OutputStreamThread(final Client client) {
2224
2325 public void run () throws IOException {
2426 //initialise outputStream
25- final OutputStream finalOutputStream = this .socket .getOutputStream ();
27+ finalOutputStream = this .socket .getOutputStream ();
2628 //start sending send byte arrays
2729 this .timer .scheduleAtFixedRate (new TimerTask () {
2830 @ Override
@@ -80,7 +82,12 @@ public void run() {
8082 }
8183
8284 public void interrupt () {
83- this .timer .cancel ();
85+ try {
86+ this .finalOutputStream .close ();
87+ this .timer .cancel ();
88+ } catch (IOException exception ) {
89+ exception .printStackTrace ();
90+ }
8491 }
8592
8693 public void send (final Packet packet ) {
0 commit comments