我们现在在Java中使用多线程通常不会直接用Thread对象了,而是会用到java.util.concurrent包下的ExecutorService类来初始化一个线程池供我们使用. 之前我一直习惯自己维护一个list保存submit的callable task所返回的Future对象. 在主线程中遍历这个list并调用Future的get()方法取到Task的返回值. public class CompletionServiceTest { static class Task implemen…
1.throws和throw的区别 throws使用在函数外,是编译时的异常,throw使用在函数内,是运行时的异常 使用方法 public int method(int[] arr) throws NullPointerException{} public int method(int[] arr){ if(arr==null){ throw new NullPointerException (“数组的引用不能为空”); } } throws 抛出的是异常类,可以抛出多个,用逗号隔开,thro…
Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口.Runnable是接口,建议用接口的方式生成线程,因为接口可以实现多继承,况且Runnable只有一个run方法,很适合继承.在使用Thread的时候只需继承Thread,并且new一个实例出来,调用start()方法即可以启动一个线程. Thread Test = new Thread(); Test.start(); 在使用Runnable的时候需要先new一个实现Runnable的实例,之后启动Thread即可…