diff --git a/src/createthread/CreateByCallable.java b/src/createthread/CreateByCallable.java new file mode 100644 index 0000000..1fe5eba --- /dev/null +++ b/src/createthread/CreateByCallable.java @@ -0,0 +1,22 @@ +package createthread; + +import java.util.concurrent.Callable; +import java.util.concurrent.FutureTask; + +public class CreateByCallable implements Callable { + @Override + public String call() throws Exception { + return "create by implementing Callable"; + } + + public static void main(String[] args) { + CreateByCallable createByCallable = new CreateByCallable(); + FutureTask futureTask = new FutureTask<>(createByCallable); + new Thread(futureTask).start(); + try { + System.out.println(futureTask.get()); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/createthread/CreateByExecutorService.java b/src/createthread/CreateByExecutorService.java new file mode 100644 index 0000000..0f775b7 --- /dev/null +++ b/src/createthread/CreateByExecutorService.java @@ -0,0 +1,27 @@ +package createthread; + +import java.util.concurrent.*; + +public class CreateByExecutorService { + + public static void main(String[] args) { + ExecutorService poolA = Executors.newFixedThreadPool(2); + poolA.execute(() -> { + System.out.println("poolA"); + }); + + poolA.shutdown(); + + ThreadPoolExecutor poolB = new ThreadPoolExecutor(2,3,0, + TimeUnit.SECONDS, new LinkedBlockingQueue(3), + Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy()); + + poolB.submit(() -> { + System.out.println("poolB"); + }); + poolB.shutdown(); + + } + + +} diff --git a/src/createthread/CreateByRunnable.java b/src/createthread/CreateByRunnable.java new file mode 100644 index 0000000..5948c5e --- /dev/null +++ b/src/createthread/CreateByRunnable.java @@ -0,0 +1,13 @@ +package createthread; + +public class CreateByRunnable implements Runnable{ + @Override + public void run() { + System.out.println("create by implementing Runnable"); + } + + public static void main(String[] args) { + CreateByRunnable createByRunnable = new CreateByRunnable(); + new Thread(createByRunnable).start(); + } +} diff --git a/src/createthread/CreateByThread.java b/src/createthread/CreateByThread.java new file mode 100644 index 0000000..5bab5b2 --- /dev/null +++ b/src/createthread/CreateByThread.java @@ -0,0 +1,13 @@ +package createthread; + +public class CreateByThread extends Thread{ + @Override + public void run(){ + System.out.println("create new thread by extending Thread"); + } + + public static void main(String[] args) { + CreateByThread createByThread = new CreateByThread(); + createByThread.start(); + } +} diff --git a/src/recursive/TreeNode.java b/src/recursive/TreeNode.java new file mode 100644 index 0000000..be85746 --- /dev/null +++ b/src/recursive/TreeNode.java @@ -0,0 +1,43 @@ +package recursive; + +import java.util.ArrayList; +import java.util.List; + +public class TreeNode { + + private final int id; + + private final int parentId; + + private final String name; + + private final List children; + + public TreeNode(int id, int parentId, String name) { + this.id = id; + this.parentId = parentId; + this.name = name; + children = new ArrayList<>(); + } + + public void addChild(TreeNode child) { + children.add(child); + } + + public int getId() { + return id; + } + + public int getParentId() { + return parentId; + } + + @Override + public String toString() { + return "TreeNode{" + + "id=" + id + + ", parentId=" + parentId + + ", children=" + children.toString() + + '}'; + } +} diff --git a/src/recursive/TreeStructure.java b/src/recursive/TreeStructure.java new file mode 100644 index 0000000..10fb3c0 --- /dev/null +++ b/src/recursive/TreeStructure.java @@ -0,0 +1,42 @@ +package recursive; + +import java.util.*; + +public class TreeStructure { + + public static void main(String[] args) { + List treeNodes = new ArrayList<>(); + Set leafSet = new HashSet<>(); + treeNodes.add(new TreeNode(1,0,"root")); + treeNodes.add(new TreeNode(2,1,"a1")); + treeNodes.add(new TreeNode(3,1,"a2")); + treeNodes.add(new TreeNode(4,2,"b1")); + treeNodes.add(new TreeNode(5,4,"c1")); + + Map treeMap = new HashMap<>(); + + for (TreeNode treeNode : treeNodes) { + leafSet.add(treeNode.getId()); + } + + for (TreeNode treeNode : treeNodes) { + treeMap.put(treeNode.getId(), treeNode); + leafSet.remove(treeNode.getParentId()); + } + + for (Integer id: leafSet) { + int parentId = treeMap.get(id).getParentId(); + int nodeId = id; + while (parentId != 0) { + treeMap.get(parentId).addChild(treeMap.get(nodeId)); + nodeId = parentId; + parentId = treeMap.get(nodeId).getParentId(); + } + } + + TreeNode finalNode = treeMap.values().stream() + .filter(treeNode -> treeNode.getParentId() == 0).toList().getFirst(); + + System.out.println(finalNode); + } +}