zoukankan      html  css  js  c++  java
  • 创建线程的多种方式

     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();
            
        }
    
    }
  • 相关阅读:
    设计模式学习总结系列应用实例
    【研究课题】高校特殊学生的发现及培养机制研究
    Linux下Oracle11G RAC报错:在安装oracle软件时报file not found一例
    python pro practice
    openstack python sdk list tenants get token get servers
    openstack api
    python
    git for windows
    openstack api users list get token get servers
    linux 流量监控
  • 原文地址:https://www.cnblogs.com/quyangyang/p/10359954.html
Copyright © 2011-2022 走看看