diff --git a/logs/race.log b/logs/race.log new file mode 100644 index 0000000..1fc4ed0 --- /dev/null +++ b/logs/race.log @@ -0,0 +1,100 @@ +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 1 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 2 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 3 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 4 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 5 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 6 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 7 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 8 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 9 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 10 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 11 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 12 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 13 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 14 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 15 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 16 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 17 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 18 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 19 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 20 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 21 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 22 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 23 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 24 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 25 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 26 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 27 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 28 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 29 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 30 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 31 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 32 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 33 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 34 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 35 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 36 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 37 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 38 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 39 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 40 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 41 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 42 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 43 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 44 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 45 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 46 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 47 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 48 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 49 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 50 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 51 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 52 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 53 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 0 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 54 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 56 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 57 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 58 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 59 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 60 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 61 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 62 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 63 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 64 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 65 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 66 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 67 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 68 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 69 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 70 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 55 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 71 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 73 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 74 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 72 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 76 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 77 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 78 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 79 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 80 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 75 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 81 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 83 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 84 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 85 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 86 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 87 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 88 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 89 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 90 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 91 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 92 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 93 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 94 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 95 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 96 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 97 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 98 +2020-11-06 19:04:21 INFO FirstThread:17 - Extended Thread: 99 +2020-11-06 19:04:21 INFO SecondThread:17 - Runnable thread: 82 diff --git a/src/main/java/race/Counter.java b/src/main/java/race/Counter.java new file mode 100644 index 0000000..753cf0d --- /dev/null +++ b/src/main/java/race/Counter.java @@ -0,0 +1,14 @@ +package race; + +public class Counter { + private static final int END_POINT = 100; + private int value; + + public int increment() { + return value++; + } + + public boolean isValueLessThanEndPoint() { + return value < END_POINT; + } +} diff --git a/src/main/java/race/FirstThread.java b/src/main/java/race/FirstThread.java new file mode 100644 index 0000000..c253590 --- /dev/null +++ b/src/main/java/race/FirstThread.java @@ -0,0 +1,20 @@ +package race; + +import org.apache.log4j.Logger; + +public class FirstThread extends Thread { + private static final Logger logger = Logger.getLogger(FirstThread.class); + private final Counter counter; + + public FirstThread(Counter counter) { + this.counter = counter; + } + + @Override + public void run() { + while (counter.isValueLessThanEndPoint()) { + int i = counter.increment(); + logger.info("Extended Thread: " + i); + } + } +} diff --git a/src/main/java/race/Main.java b/src/main/java/race/Main.java new file mode 100644 index 0000000..0d78191 --- /dev/null +++ b/src/main/java/race/Main.java @@ -0,0 +1,13 @@ +package race; + +public class Main { + public static void main(String[] args) { + Counter counter = new Counter(); + + FirstThread firstThread = new FirstThread(counter); + Thread secondThread = new Thread(new SecondThread(counter)); + + firstThread.start(); + secondThread.start(); + } +} diff --git a/src/main/java/race/SecondThread.java b/src/main/java/race/SecondThread.java new file mode 100644 index 0000000..88989d0 --- /dev/null +++ b/src/main/java/race/SecondThread.java @@ -0,0 +1,20 @@ +package race; + +import org.apache.log4j.Logger; + +public class SecondThread implements Runnable { + private static final Logger logger = Logger.getLogger(SecondThread.class); + private final Counter counter; + + public SecondThread(Counter counter) { + this.counter = counter; + } + + @Override + public void run() { + while (counter.isValueLessThanEndPoint()) { + int i = counter.increment(); + logger.info("Runnable thread: " + i); + } + } +} diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties new file mode 100644 index 0000000..b2a2142 --- /dev/null +++ b/src/main/resources/log4j.properties @@ -0,0 +1,16 @@ +log4j.rootLogger=INFO, stdout, file +log4j.logger.org.hibernate=INFO +log4j.logger.org.hibernate.SQL=DEBUG +log4j.logger.org.hibernate.type.descriptor.sql=INFO + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n + +log4j.appender.file=org.apache.log4j.RollingFileAppender +log4j.appender.file.File=logs/race.log +log4j.appender.file.MaxFileSize=5MB +log4j.appender.file.MaxBackupIndex=10 +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n