Thread Class
Thu Dec 29 2022 18:40:20 GMT+0000 (Coordinated Universal Time)
Saved by @prettyleka #java #generics
/*Extended the Thread Class Created and Overrode a .run() method from Thread Instantiated HugeProblemSolver and called .start() which signifies to start a new thread and search in the class for the .run() method to execute.*/ //CrystalBall import java.util.Random; public class CrystalBall extends Thread{ private Question question; public CrystalBall(Question question){ this.question = question; } @Override public void run() { ask(this.question); } private int getSleepTimeInMs(Question.Difficulty difficulty) { switch (difficulty) { case EASY: return 1000; case MEDIUM: return 2000; case HARD: return 3000; default: return 500; } } private String answer() { String[] answers = { "Signs point to yes!", "Certainly!", "No opinion", "Answer is a little cloudy. Try again.", "Surely.", "No.", "Signs point to no.", "It could very well be!" }; return answers[new Random().nextInt(answers.length)]; } private void think(Question question) { System.out.println("Hmm... Thinking"); try { Thread.sleep(this.getSleepTimeInMs(question.getDifficulty())); } catch (Exception e) { System.out.println(e); } System.out.println("Done!"); } public void ask(Question question) { System.out.println("Good question! You asked: " + question.getQuestion()); this.think(question); System.out.println("Answer: " + this.answer()); } } //FortuneTeller import java.util.Arrays; import java.util.List; public class FortuneTeller { public static void main(String[] args) { List<Question> questions = Arrays.asList( new Question(Question.Difficulty.EASY, "Am I a good coder?"), new Question(Question.Difficulty.MEDIUM, "Will I be able to finish this course?"), new Question(Question.Difficulty.EASY, "Will it rain tomorrow?"), new Question(Question.Difficulty.EASY, "Will it snow today?"), new Question(Question.Difficulty.HARD, "Are you really all-knowing?"), new Question(Question.Difficulty.HARD, "Do I have any hidden talents?"), new Question(Question.Difficulty.HARD, "Will I live to be greater than 100 years old?"), new Question(Question.Difficulty.MEDIUM, "Will I be rich one day?"), new Question(Question.Difficulty.MEDIUM, "Should I clean my room?") ); questions.stream().forEach(q -> { CrystalBall c = new CrystalBall(q); c.start(); }); } }
Comments