1 public class Demo1 extends Thread{ 2 3 @Override 4 public void run() { 5 while(!interrupted()) { 6 System.out.println(getName()+"线程执行了"); 7 try { 8 Thread.sleep(200); 9 } catch (InterruptedException e) { 10 // TODO Auto-generated catch block 11 e.printStackTrace(); 12 } 13 14 } 15 } 16 17 public static void main(String[] args) { 18 Demo1 d1 = new Demo1(); 19 Demo1 d2 = new Demo1(); 20 21 d1.start(); 22 d2.start(); 23 24 d1.interrupt(); 25 26 } 27 28 29 }
1 public class Demo2 implements Runnable { 2 3 @Override 4 public void run() { 5 while(true) { 6 System.out.println("thread running ..."); 7 } 8 9 } 10 11 12 public static void main(String[] args) { 13 Thread thread = new Thread(new Demo2()); 14 thread.start(); 15 } 16 17 18 }
public class Demo3 { public static void main(String[] args) { //继承thread类子类方式 /*new Thread() { public void run() { System.out.println("thread start ..."); }; }.start(); */ //实现runnable接口 /* new Thread(new Runnable() { public void run() { System.out.println("thread start ..."); } }).start();*/ new Thread(new Runnable() { @Override public void run() { System.out.println("runnable"); } }) { @Override public void run() { System.out.println("sub"); } }.start(); //sub 重写了父类的run方法 }
1 public class Demo4 implements Callable<Integer>{ //指定返回类型 2 3 public static void main(String[] args) throws Exception { 4 Demo4 d = new Demo4(); 5 //class FutureTask<V> implements Runnables RunnableFuture<V> 6 // --- interface RunnableFuture<V> extends Runnable,Future<V> 对线程任务进行封装 7 8 FutureTask<Integer> task = new FutureTask<>(d); 9 10 Thread t = new Thread(task); 11 t.start(); 12 13 Integer result = task.get(); 14 System.out.println("线程执行结果为:"+result); 15 } 16 17 @Override 18 public Integer call() throws Exception { 19 System.out.println("正在进行紧张计算"); 20 Thread.sleep(3000); 21 return 1; 22 } 23 24 }
1 public class Demo5 { 2 3 4 public static void main(String[] args) { 5 6 Timer timer = new Timer(); 7 8 // abstract class TimerTask implements Runnable 9 timer.schedule(new TimerTask() { 10 11 @Override 12 public void run() { 13 //实现定时任务 14 System.out.println("timertask is running"); 15 } 16 }, 0, 1000); 17 //java.util.Timer.schedule(TimerTask task, long delay, long period) 18 19 } 20 21 }
1 public class Demo6 { 2 3 public static void main(String[] args) { 4 5 Executor threadPool = Executors.newFixedThreadPool(10);//固定容量的线程池 6 7 for(int i = 0;i<10; i++ ) { 8 threadPool.execute(new Runnable() { 9 10 @Override 11 public void run() { 12 System.out.println(Thread.currentThread().getName()); 13 } 14 }); 15 } 16 } 17 }
1 public class Demo7 { 2 3 public static void main(String[] args) { 4 List<Integer> values = Arrays.asList(10,20,30,40); // Arrays.asList(array):将数组array转化为List 5 int res = new Demo7().add(values); 6 System.out.println("计算结果为:"+res); 7 } 8 public int add(List<Integer> values) { 9 values.parallelStream().forEach(System.out :: println); 10 return 0; 11 12 // 30 13 // 20 14 // 10 15 // 40 16 // 计算结果为:0 17 //parallelStream 并行执行 18 // return values.parallelStream().mapToInt(a -> a).sum(); 19 20 } 21 22 }
新建spring boot工程,pom 中引入spring-context依赖
//Config.java
@Configuration
@ComponentScan("com.roocon.thread.t1")
@EnableAsync
public class Config {
}
//DemoService @Service public class DemoService { @Async public void a() { while(true) { System.out.println("a"); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } @Async public void b() { while(true) { System.out.println("b"); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
public class Main { public static void main(String[] args) { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(Config.class); DemoService ds = ac.getBean(DemoService.class); ds.a(); ds.b(); } }
原文地址:https://www.cnblogs.com/quyangyang/p/10359954.html
时间: 2024-11-07 11:45:32