zoukankan      html  css  js  c++  java
  • java三种实现线程的方法比较

    1.继承Thread

    2.实现Runnable

    1和2的比较,1可以创建不同的任务,每个任务互不干扰,对于2,相当于只执行一个任务,多个任务之间互相影响,比如售票系统,每售出一张票,票数都要减1,这个时候应该用runnable,因为当其操控的是一个实例的时候,所有实现runable的类共用这个实例资源,而runnable还有一个好处,就是有时候需要继承某个类的时候,Thread无法做到,因为它不能多继承,而runnable却可以。

    import java.util.concurrent.Callable;
    
    public class MyCallable implements Callable<Integer>{
    	@Override
    	public Integer call() throws Exception {
    		int i=0;
    		for(;i<10;i++){
    			Thread.sleep(10000);
    			System.out.println(i);
    		}
    		return i;
    	}
    }
    
    
    
    
    
    
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.FutureTask;
    
    public class Test {
    	public static void main(String[] args){
    		MyCallable myCallable=new MyCallable();
    		FutureTask<Integer> ft=new FutureTask<>(myCallable);
    		//方式一:采用线程池来调用线程
    		ExecutorService es=Executors.newCachedThreadPool();
    		es.submit(ft);
    		es.shutdown();
    		//方式二:采用Thread单任务模式启动线程
    //		new Thread(ft).start();
    	}
    }
    

      如果为了可取消性而使用 Future 但又不提供可用的结果,则可以声明 Future<?> 形式类型、并返回 null 作为底层任务的结果。

  • 相关阅读:
    CA证书申请、认证原理
    流量异常监控
    排查和处理一台被攻击的linux系统及其事后分析
    day39---mysql基础三
    一次专利讲座的笔记
    HBase MVCC 代码阅读(一)
    [翻译]HBase 中的 ACID
    [翻译]HBase 的 MVCC 和内建的原子操作
    HBase Maven 工程模块梳理
    关于 MVCC 的基础
  • 原文地址:https://www.cnblogs.com/yzjT-mac/p/5862758.html
Copyright © 2011-2022 走看看