From c37cc7ad52c3da330249013e8687ea7bd6702a00 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sat, 31 Oct 2015 19:13:57 +0000 Subject: [PATCH] Convert remaining Threads to I2PThread or I2PAppThread --- apps/BOB/src/net/i2p/BOB/BOB.java | 2 +- apps/BOB/src/net/i2p/BOB/DoCMDS.java | 7 ++++--- apps/BOB/src/net/i2p/BOB/I2Plistener.java | 4 +++- apps/BOB/src/net/i2p/BOB/I2PtoTCP.java | 6 ++++-- apps/BOB/src/net/i2p/BOB/MUXlisten.java | 6 ++++-- apps/BOB/src/net/i2p/BOB/TCPlistener.java | 4 +++- apps/BOB/src/net/i2p/BOB/TCPtoI2P.java | 9 +++++---- apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java | 10 +++++----- core/java/src/net/i2p/util/I2PAppThread.java | 8 ++++++++ core/java/src/net/i2p/util/I2PThread.java | 8 ++++++++ router/java/src/net/i2p/router/Router.java | 4 ++-- .../src/net/i2p/router/peermanager/PeerManager.java | 2 +- router/java/src/net/i2p/router/transport/UPnP.java | 5 +++-- 13 files changed, 51 insertions(+), 24 deletions(-) diff --git a/apps/BOB/src/net/i2p/BOB/BOB.java b/apps/BOB/src/net/i2p/BOB/BOB.java index c4ef3b23a2..e1106c9bbb 100644 --- a/apps/BOB/src/net/i2p/BOB/BOB.java +++ b/apps/BOB/src/net/i2p/BOB/BOB.java @@ -338,7 +338,7 @@ public class BOB implements Runnable, ClientApp { if (g) { DoCMDS conn_c = new DoCMDS(spin, lock, server, props, database, _log); - Thread t = new Thread(conn_c); + Thread t = new I2PAppThread(conn_c); t.setName("BOB.DoCMDS " + i); t.start(); i++; diff --git a/apps/BOB/src/net/i2p/BOB/DoCMDS.java b/apps/BOB/src/net/i2p/BOB/DoCMDS.java index 957f0ea3f1..7e5bd10147 100644 --- a/apps/BOB/src/net/i2p/BOB/DoCMDS.java +++ b/apps/BOB/src/net/i2p/BOB/DoCMDS.java @@ -25,12 +25,13 @@ import java.util.Locale; import java.util.Properties; import java.util.StringTokenizer; import java.util.concurrent.atomic.AtomicBoolean; + import net.i2p.I2PAppContext; import net.i2p.I2PException; import net.i2p.client.I2PClientFactory; -//import net.i2p.data.DataFormatException; import net.i2p.data.Destination; -//import net.i2p.i2ptunnel.I2PTunnel; +import net.i2p.util.I2PAppThread; + // needed only for debugging. // import java.util.logging.Level; // import java.util.logging.Logger; @@ -1307,7 +1308,7 @@ public class DoCMDS implements Runnable { // wait } tunnel = new MUXlisten(lock, database, nickinfo, _log); - Thread t = new Thread(tunnel); + Thread t = new I2PAppThread(tunnel); t.start(); // try { // Thread.sleep(1000 * 10); // Slow down the startup. diff --git a/apps/BOB/src/net/i2p/BOB/I2Plistener.java b/apps/BOB/src/net/i2p/BOB/I2Plistener.java index f862c7caef..ebe4888602 100644 --- a/apps/BOB/src/net/i2p/BOB/I2Plistener.java +++ b/apps/BOB/src/net/i2p/BOB/I2Plistener.java @@ -18,10 +18,12 @@ package net.i2p.BOB; import java.net.ConnectException; import java.net.SocketTimeoutException; import java.util.concurrent.atomic.AtomicBoolean; + import net.i2p.I2PException; import net.i2p.client.streaming.I2PServerSocket; import net.i2p.client.streaming.I2PSocket; import net.i2p.client.streaming.I2PSocketManager; +import net.i2p.util.I2PAppThread; /** * Listen on I2P and connect to TCP @@ -77,7 +79,7 @@ public class I2Plistener implements Runnable { conn++; // toss the connection to a new thread. I2PtoTCP conn_c = new I2PtoTCP(sessSocket, info, database, lives); - Thread t = new Thread(conn_c, Thread.currentThread().getName() + " I2PtoTCP " + conn); + Thread t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " I2PtoTCP " + conn); t.start(); } diff --git a/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java b/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java index bf699db60e..8e1cebb735 100644 --- a/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java +++ b/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java @@ -19,7 +19,9 @@ import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.concurrent.atomic.AtomicBoolean; + import net.i2p.client.streaming.I2PSocket; +import net.i2p.util.I2PAppThread; /** * Process I2P->TCP @@ -111,8 +113,8 @@ public class I2PtoTCP implements Runnable { // setup to cross the streams TCPio conn_c = new TCPio(in, Iout, lives); // app -> I2P TCPio conn_a = new TCPio(Iin, out, lives); // I2P -> app - t = new Thread(conn_c, Thread.currentThread().getName() + " TCPioA"); - q = new Thread(conn_a, Thread.currentThread().getName() + " TCPioB"); + t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " TCPioA"); + q = new I2PAppThread(conn_a, Thread.currentThread().getName() + " TCPioB"); // Fire! t.start(); q.start(); diff --git a/apps/BOB/src/net/i2p/BOB/MUXlisten.java b/apps/BOB/src/net/i2p/BOB/MUXlisten.java index f330be971d..81dbe08451 100644 --- a/apps/BOB/src/net/i2p/BOB/MUXlisten.java +++ b/apps/BOB/src/net/i2p/BOB/MUXlisten.java @@ -21,11 +21,13 @@ import java.net.InetAddress; import java.net.ServerSocket; import java.util.Properties; import java.util.concurrent.atomic.AtomicBoolean; + import net.i2p.I2PException; import net.i2p.client.I2PClient; import net.i2p.client.streaming.I2PServerSocket; import net.i2p.client.streaming.I2PSocketManager; import net.i2p.client.streaming.I2PSocketManagerFactory; +import net.i2p.util.I2PAppThread; import net.i2p.util.Log; /** @@ -201,14 +203,14 @@ public class MUXlisten implements Runnable { // I2P -> TCP SS = socketManager.getServerSocket(); I2Plistener conn = new I2Plistener(SS, socketManager, info, database, _log, lives); - t = new Thread(tg, conn, "BOBI2Plistener " + N); + t = new I2PAppThread(tg, conn, "BOBI2Plistener " + N); t.start(); } if (come_in) { // TCP -> I2P TCPlistener conn = new TCPlistener(listener, socketManager, info, database, _log, lives); - q = new Thread(tg, conn, "BOBTCPlistener " + N); + q = new I2PAppThread(tg, conn, "BOBTCPlistener " + N); q.start(); } diff --git a/apps/BOB/src/net/i2p/BOB/TCPlistener.java b/apps/BOB/src/net/i2p/BOB/TCPlistener.java index 70ff52b148..2ad1b5af61 100644 --- a/apps/BOB/src/net/i2p/BOB/TCPlistener.java +++ b/apps/BOB/src/net/i2p/BOB/TCPlistener.java @@ -20,8 +20,10 @@ import java.net.ServerSocket; import java.net.Socket; import java.net.SocketTimeoutException; import java.util.concurrent.atomic.AtomicBoolean; + import net.i2p.client.streaming.I2PServerSocket; import net.i2p.client.streaming.I2PSocketManager; +import net.i2p.util.I2PAppThread; /** * Listen on TCP port and connect to I2P @@ -75,7 +77,7 @@ public class TCPlistener implements Runnable { conn++; // toss the connection to a new thread. TCPtoI2P conn_c = new TCPtoI2P(socketManager, server, info, database, lives); - Thread t = new Thread(conn_c, Thread.currentThread().getName() + " TCPtoI2P " + conn); + Thread t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " TCPtoI2P " + conn); t.start(); g = false; } diff --git a/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java b/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java index 0ce587257d..3f196af28d 100644 --- a/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java +++ b/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java @@ -24,13 +24,14 @@ import java.net.NoRouteToHostException; import java.net.Socket; import java.util.Locale; import java.util.concurrent.atomic.AtomicBoolean; + +import net.i2p.I2PAppContext; import net.i2p.I2PException; import net.i2p.client.streaming.I2PSocket; import net.i2p.client.streaming.I2PSocketManager; import net.i2p.data.DataFormatException; import net.i2p.data.Destination; -//import net.i2p.i2ptunnel.I2PTunnel; -import net.i2p.I2PAppContext; +import net.i2p.util.I2PAppThread; /** * @@ -158,8 +159,8 @@ public class TCPtoI2P implements Runnable { // setup to cross the streams TCPio conn_c = new TCPio(in, Iout, lives); // app -> I2P TCPio conn_a = new TCPio(Iin, out, lives); // I2P -> app - t = new Thread(conn_c, Thread.currentThread().getName() + " TCPioA"); - q = new Thread(conn_a, Thread.currentThread().getName() + " TCPioB"); + t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " TCPioA"); + q = new I2PAppThread(conn_a, Thread.currentThread().getName() + " TCPioB"); // Fire! t.start(); q.start(); diff --git a/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java b/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java index fe9561cedb..7770d4075e 100644 --- a/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java +++ b/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java @@ -119,10 +119,10 @@ class SAMv3StreamSession extends SAMStreamSession implements SAMv3Handler.Sessi WritableByteChannel toI2P = Channels.newChannel(i2ps.getOutputStream()); SAMBridge bridge = handler.getBridge(); - (new Thread(rec.getThreadGroup(), + (new I2PAppThread(rec.getThreadGroup(), new Pipe(fromClient, toI2P, bridge), "ConnectV3 SAMPipeClientToI2P")).start(); - (new Thread(rec.getThreadGroup(), + (new I2PAppThread(rec.getThreadGroup(), new Pipe(fromI2P, toClient, bridge), "ConnectV3 SAMPipeI2PToClient")).start(); } @@ -176,10 +176,10 @@ class SAMv3StreamSession extends SAMStreamSession implements SAMv3Handler.Sessi WritableByteChannel toI2P = Channels.newChannel(i2ps.getOutputStream()); SAMBridge bridge = handler.getBridge(); - (new Thread(rec.getThreadGroup(), + (new I2PAppThread(rec.getThreadGroup(), new Pipe(fromClient, toI2P, bridge), "AcceptV3 SAMPipeClientToI2P")).start(); - (new Thread(rec.getThreadGroup(), + (new I2PAppThread(rec.getThreadGroup(), new Pipe(fromI2P, toClient, bridge), "AcceptV3 SAMPipeI2PToClient")).start(); } @@ -219,7 +219,7 @@ class SAMv3StreamSession extends SAMStreamSession implements SAMv3Handler.Sessi } SocketForwarder forwarder = new SocketForwarder(host, port, this, verbose); - (new Thread(rec.getThreadGroup(), forwarder, "SAMV3StreamForwarder")).start(); + (new I2PAppThread(rec.getThreadGroup(), forwarder, "SAMV3StreamForwarder")).start(); } private static class SocketForwarder implements Runnable diff --git a/core/java/src/net/i2p/util/I2PAppThread.java b/core/java/src/net/i2p/util/I2PAppThread.java index da291d2104..c3de5c87ac 100644 --- a/core/java/src/net/i2p/util/I2PAppThread.java +++ b/core/java/src/net/i2p/util/I2PAppThread.java @@ -38,9 +38,17 @@ public class I2PAppThread extends I2PThread { public I2PAppThread(Runnable r, String name) { super(r, name); } + public I2PAppThread(Runnable r, String name, boolean isDaemon) { super(r, name, isDaemon); } + + /** + * @since 0.9.23 + */ + public I2PAppThread(ThreadGroup group, Runnable r, String name) { + super(group, r, name); + } @Override protected void fireOOM(OutOfMemoryError oom) { diff --git a/core/java/src/net/i2p/util/I2PThread.java b/core/java/src/net/i2p/util/I2PThread.java index 22611ee3f1..97041f4ee2 100644 --- a/core/java/src/net/i2p/util/I2PThread.java +++ b/core/java/src/net/i2p/util/I2PThread.java @@ -73,6 +73,14 @@ public class I2PThread extends Thread { // _createdBy = new Exception("Created by"); } + /** + * @since 0.9.23 + */ + public I2PThread(ThreadGroup group, Runnable r, String name) { + super(group, r, name); + setPriority(NORM_PRIORITY); + } + /**** private void log(int level, String msg) { log(level, msg, null); } diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index 260115d454..426da4a757 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -1141,7 +1141,7 @@ public class Router implements RouterClock.ClockShiftListener { _log.warn("Running shutdown task " + task.getClass()); try { //task.run(); - Thread t = new Thread(task, "Shutdown task " + task.getClass().getName()); + Thread t = new I2PAppThread(task, "Shutdown task " + task.getClass().getName()); t.setDaemon(true); t.start(); try { @@ -1454,7 +1454,7 @@ public class Router implements RouterClock.ClockShiftListener { ((RouterClock) _context.clock()).removeShiftListener(this); // Let's not stop accepting tunnels, etc //_started = _context.clock().now(); - Thread t = new Thread(new Restarter(_context), "Router Restart"); + Thread t = new I2PThread(new Restarter(_context), "Router Restart"); t.setPriority(Thread.NORM_PRIORITY + 1); t.start(); } diff --git a/router/java/src/net/i2p/router/peermanager/PeerManager.java b/router/java/src/net/i2p/router/peermanager/PeerManager.java index 8061a25177..b3cc3643b0 100644 --- a/router/java/src/net/i2p/router/peermanager/PeerManager.java +++ b/router/java/src/net/i2p/router/peermanager/PeerManager.java @@ -165,7 +165,7 @@ class PeerManager { * @since 0.8.8 */ private void loadProfilesInBackground() { - (new Thread(new ProfileLoader())).start(); + (new I2PThread(new ProfileLoader())).start(); } /** diff --git a/router/java/src/net/i2p/router/transport/UPnP.java b/router/java/src/net/i2p/router/transport/UPnP.java index baec7ab621..26c7610b5f 100644 --- a/router/java/src/net/i2p/router/transport/UPnP.java +++ b/router/java/src/net/i2p/router/transport/UPnP.java @@ -19,6 +19,7 @@ import java.util.concurrent.atomic.AtomicInteger; import net.i2p.I2PAppContext; import net.i2p.data.DataHelper; import net.i2p.util.Addresses; +import net.i2p.util.I2PThread; import net.i2p.util.Log; import net.i2p.util.Translate; @@ -994,7 +995,7 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener { } if (_log.shouldLog(Log.INFO)) _log.info("Starting thread to forward " + portsToForwardNow.size() + " ports"); - Thread t = new Thread(new RegisterPortsThread(portsToForwardNow)); + Thread t = new I2PThread(new RegisterPortsThread(portsToForwardNow)); t.setName("UPnP Port Opener " + __id.incrementAndGet()); t.setDaemon(true); t.start(); @@ -1034,7 +1035,7 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener { private void unregisterPorts(Set<ForwardPort> portsToForwardNow) { if (_log.shouldLog(Log.INFO)) _log.info("Starting thread to un-forward " + portsToForwardNow.size() + " ports"); - Thread t = new Thread(new UnregisterPortsThread(portsToForwardNow)); + Thread t = new I2PThread(new UnregisterPortsThread(portsToForwardNow)); t.setName("UPnP Port Closer " + __id.incrementAndGet()); t.setDaemon(true); t.start(); -- GitLab