|
1 | 1 | package com.leetcode; |
2 | 2 |
|
3 | | -import java.util.concurrent.ArrayBlockingQueue; |
4 | | -import java.util.concurrent.BlockingQueue; |
| 3 | +import java.util.concurrent.*; |
5 | 4 |
|
6 | 5 | public class ThreadTest { |
7 | 6 | /////////////////生产者消费者模型//////////////////////////////////////////////////////// |
@@ -131,13 +130,73 @@ public static void main(String[] args) { |
131 | 130 | // new Thread(consumer, "线程"+i).start(); |
132 | 131 | // } |
133 | 132 |
|
134 | | - Number number = new Number(0); |
135 | | - EvenPrinter evenPrinter = new EvenPrinter(number); |
136 | | - OddPrinter oddPrinter = new OddPrinter(number); |
137 | | - Thread evenThread = new Thread(evenPrinter, "偶数打印线程"); |
138 | | - Thread oddThread = new Thread(oddPrinter, "奇数打印线程"); |
139 | | - evenThread.start(); |
140 | | - oddThread.start(); |
| 133 | +// Number number = new Number(0); |
| 134 | +// EvenPrinter evenPrinter = new EvenPrinter(number); |
| 135 | +// OddPrinter oddPrinter = new OddPrinter(number); |
| 136 | +// Thread evenThread = new Thread(evenPrinter, "偶数打印线程"); |
| 137 | +// Thread oddThread = new Thread(oddPrinter, "奇数打印线程"); |
| 138 | +// evenThread.start(); |
| 139 | +// oddThread.start(); |
| 140 | + |
| 141 | + |
| 142 | + |
| 143 | +// //创建一个可缓存线程池 |
| 144 | +// ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); |
| 145 | +// for (int i = 0; i < 10; i++) { |
| 146 | +// try { |
| 147 | +// // sleep可明显看到使用的是线程池里面以前的线程,没有创建新的线程 |
| 148 | +// Thread.sleep(1000); |
| 149 | +// } catch (InterruptedException e) { |
| 150 | +// e.printStackTrace(); |
| 151 | +// } |
| 152 | +// cachedThreadPool.execute(new Runnable() { |
| 153 | +// public void run() { |
| 154 | +// // 打印正在执行的缓存线程信息 |
| 155 | +// System.out.println(Thread.currentThread().getName() |
| 156 | +// + "正在被执行"); |
| 157 | +// try { |
| 158 | +// Thread.sleep(1000); |
| 159 | +// } catch (InterruptedException e) { |
| 160 | +// e.printStackTrace(); |
| 161 | +// } |
| 162 | +// } |
| 163 | +// }); |
| 164 | +// } |
| 165 | + |
| 166 | +// //定长线程池 |
| 167 | +// ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3); |
| 168 | +// for (int i = 0; i < 10; i++) { |
| 169 | +// fixedThreadPool.execute(new Runnable() { |
| 170 | +// public void run() { |
| 171 | +// try { |
| 172 | +// // 打印正在执行的缓存线程信息 |
| 173 | +// System.out.println(Thread.currentThread().getName() |
| 174 | +// + "正在被执行"); |
| 175 | +// Thread.sleep(2000); |
| 176 | +// } catch (InterruptedException e) { |
| 177 | +// e.printStackTrace(); |
| 178 | +// } |
| 179 | +// } |
| 180 | +// }); |
| 181 | +// } |
| 182 | + ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5); |
| 183 | + //延迟1秒执行 |
| 184 | + /*scheduledThreadPool.schedule(new Runnable() { |
| 185 | + public void run() { |
| 186 | + System.out.println("延迟1秒执行"); |
| 187 | + } |
| 188 | + }, 1, TimeUnit.SECONDS);*/ |
| 189 | + |
| 190 | + |
| 191 | + //延迟1秒后每3秒执行一次 |
| 192 | + scheduledThreadPool.scheduleAtFixedRate(new Runnable() { |
| 193 | + public void run() { |
| 194 | + System.out.println("延迟1秒后每3秒执行一次"); |
| 195 | + } |
| 196 | + }, 1, 3, TimeUnit.SECONDS); |
| 197 | + |
| 198 | + |
| 199 | + |
141 | 200 |
|
142 | 201 | // try { |
143 | 202 | // Thread.sleep(2000); |
|
0 commit comments