当前位置: 首页 > news >正文

最好加盟网站建设教育机构在线咨询

最好加盟网站建设,教育机构在线咨询,高水平大学建设大学网站,用户体验最好的网站创建三种线程的方式对比 使用实现Runnable、Callable接口的方式创建多线程。 优势 Java的设计是单继承的设计,如果使用继承Thread的方式实现多线程,则不能继承其他的类,而如果使用实现Runnable接口或Callable接口的方式实现多线程&#xf…

创建三种线程的方式对比

使用实现Runnable、Callable接口的方式创建多线程。

优势

Java的设计是单继承的设计,如果使用继承Thread的方式实现多线程,则不能继承其他的类,而如果使用实现Runnable接口或Callable接口的方式实现多线程,还可以继承其他类。

采用接口能够更好的实现数据共享。线程的启动需要Thread类的start方法,如果采用继承的方式每次新建一个线程时,每个新建线程的数据都会单独的存在线程内存中,这样每个线程会单独的操作自己线程的数据,不能更好的实现线程之间的数据共享。

劣势

编程稍微复杂,如果要访问当前线程,则必须使用Thread.currentThread()方法。

使用继承Thread的方式实现多线程测试案例

public class ThreadTest extends Thread{public int count = 10;@Overridepublic void run() {count--;System.out.println(this.getName()+"的count:"+count);}public static void main(String[] args) throws InterruptedException {Thread thread1 = new ThreadTest();//thread1有自己的数据——countThread thread2 = new ThreadTest();//thread2有自己的数据——countthread1.start();Thread.sleep(100);thread2.start();}
}

运行结果

Thread-0的count:9
Thread-1的count:9
使用实现Runnable、Callable接口的方式创建多线程测试案例
public class RunnableTest implements Runnable{public  int count = 10;@Overridepublic void run() {count--;System.out.println(Thread.currentThread().getName()+"的count:"+count);}public static void main(String[] args) throws InterruptedException {RunnableTest runnableTest = new RunnableTest();//threa1和threa2共享同一个数据——countThread thread1 = new Thread(runnableTest);Thread thread2 = new Thread(runnableTest);thread1.start();Thread.sleep(100);thread2.start();}
}

运行结果

Thread-0的count:9
Thread-1的count:8

使用继承Thread类的方式创建多线程

  • 优势:
    编写简单,如果需要访问当前线程,则无需使用Thread.currentThread()方法,直接使用this即可获得当前线程。

  • 劣势:
    线程类已经继承了Thread类,所以不能再继承其他的类。

Runnable和Callable的区别

与Runnable相比,Callable功能更强大些

  • Callable规定(重写)的方法是call(),Runnable规定(重写)的方法是run()。
  • Callable的任务执行后可返回值,而Runnable的任务是不能返回值的。
  • call方法可以抛出异常,run方法不可以。
  • Callable是支持泛型的
  • 运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果。

Runnable接口源码

@FunctionalInterface
public interface Runnable {public abstract void run();
}

Callable接口源码

@FunctionalInterface
public interface Callable<V> {/*** Computes a result, or throws an exception if unable to do so.** @return computed result //可以有返回值* @throws Exception if unable to compute a result  //可以抛出异常*/V call() throws Exception;
}

Callable接口使用案例

/*
创建线程的方式三:实现Callable接口。-----JDK1.5新增*/
//1.创建一个实现Callable的实现类
class NumThread implements Callable{//2.实现call方法,将此线程需要执行的操作声明在call()中@Overridepublic  Object call() throws Exception{int sum=0;for (int i=1;i<=100;i++){sum+=i;}return sum;}
}
public class ThreadNew {public static void main(String[] args) throws ExecutionException, InterruptedException {//3.创建Callable接口实现类的对象NumThread numThread=new NumThread();//4.将此Callable接口实现类的对象作为传递到FutureTask构造中,创建FutureTask的对象FutureTask futureTask=new FutureTask(numThread);//5.将FutureTask的对象组排位哦参数传递到thread类的构造器中,创建Thread对象,并调用start()new Thread(futureTask).start();//6.获取Callable中call方法的返回值//get()返回值即为FutureTask构造器参数Callable实现类重写的call()的返回值Object sum = futureTask.get();System.out.println("总和为:"+sum);}
}

Threa类基本属性和方法(最基本的)

基本属性


/**
* 线程的优先级
* 线程分为10个优先级,分别用整数1——10表示,其中1为最低优先级,10为最高优先级,5为默认优先级,
* 在操作系统中,线程可以划分优先级,线程优先级越高,获得 CPU 时间片的概率就越大,但线程优先级的高低与线程的执行顺序并没有必然联系,优先   * 级低的线程也有可能比优先级高的线程先执行。
*/// 线程可以具有的最高优先级
static int	MAX_PRIORITY 
// 线程可以具有的最低优先级    
static int	MIN_PRIORITY 
// 分配给线程的默认优先级(默认为5)       
static int	NORM_PRIORITY       

基本方法

 //返回对当前正在执行的线程对象的引用static Thread	currentThread() //返回该线程的名称   String	getName() //返回线程的优先级  int getPriority() //如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。       void run() //设置线程名称        void setName(String name) //设置线程的优先级。     void setPriority(int newPriority) //使该线程开始执行,Java 虚拟机调用该线程的 run 方法。       void start()        

文章转载自:
http://chested.bsdw.cn
http://grantsmanship.bsdw.cn
http://dnis.bsdw.cn
http://lice.bsdw.cn
http://cholesterolemia.bsdw.cn
http://fouquet.bsdw.cn
http://disrelation.bsdw.cn
http://planless.bsdw.cn
http://heterolecithal.bsdw.cn
http://windup.bsdw.cn
http://reagument.bsdw.cn
http://uniflorous.bsdw.cn
http://demonstrable.bsdw.cn
http://hypercomplex.bsdw.cn
http://hypnopaedia.bsdw.cn
http://counsellor.bsdw.cn
http://befell.bsdw.cn
http://inalienable.bsdw.cn
http://unio.bsdw.cn
http://tartlet.bsdw.cn
http://votaress.bsdw.cn
http://ferriage.bsdw.cn
http://flexuosity.bsdw.cn
http://shelf.bsdw.cn
http://porose.bsdw.cn
http://gnotobiology.bsdw.cn
http://transnature.bsdw.cn
http://musca.bsdw.cn
http://genic.bsdw.cn
http://homologize.bsdw.cn
http://irma.bsdw.cn
http://untie.bsdw.cn
http://woodruff.bsdw.cn
http://zedonk.bsdw.cn
http://monoplane.bsdw.cn
http://familiarization.bsdw.cn
http://sericite.bsdw.cn
http://ultimacy.bsdw.cn
http://repressurize.bsdw.cn
http://polyarchy.bsdw.cn
http://bros.bsdw.cn
http://hippophile.bsdw.cn
http://ziggurat.bsdw.cn
http://turco.bsdw.cn
http://dhole.bsdw.cn
http://cigs.bsdw.cn
http://emergence.bsdw.cn
http://inshoot.bsdw.cn
http://trustbuster.bsdw.cn
http://oppilate.bsdw.cn
http://exorable.bsdw.cn
http://protochordate.bsdw.cn
http://germanist.bsdw.cn
http://flameproof.bsdw.cn
http://cockfighting.bsdw.cn
http://forementioned.bsdw.cn
http://pollex.bsdw.cn
http://definitively.bsdw.cn
http://acopic.bsdw.cn
http://semiautonomous.bsdw.cn
http://nlp.bsdw.cn
http://corroboratory.bsdw.cn
http://yarage.bsdw.cn
http://hypnophobia.bsdw.cn
http://obviation.bsdw.cn
http://upsweep.bsdw.cn
http://pya.bsdw.cn
http://omar.bsdw.cn
http://inelasticity.bsdw.cn
http://guadalcanal.bsdw.cn
http://reincorporate.bsdw.cn
http://snye.bsdw.cn
http://advisably.bsdw.cn
http://tiltmeter.bsdw.cn
http://expansile.bsdw.cn
http://meatman.bsdw.cn
http://reserves.bsdw.cn
http://damsite.bsdw.cn
http://coking.bsdw.cn
http://mattins.bsdw.cn
http://desuetude.bsdw.cn
http://demonopolize.bsdw.cn
http://ruggedly.bsdw.cn
http://fanfaronade.bsdw.cn
http://tact.bsdw.cn
http://symantec.bsdw.cn
http://smugness.bsdw.cn
http://communalize.bsdw.cn
http://conform.bsdw.cn
http://cradleland.bsdw.cn
http://stonecutter.bsdw.cn
http://ustulate.bsdw.cn
http://southeastern.bsdw.cn
http://invigorative.bsdw.cn
http://pc.bsdw.cn
http://motorize.bsdw.cn
http://flavomycin.bsdw.cn
http://biter.bsdw.cn
http://streuth.bsdw.cn
http://rodger.bsdw.cn
http://www.hrbkazy.com/news/86846.html

相关文章:

  • 南宁市住房和城乡建设局网站媒介
  • 淳安县千岛湖建设集团网站优化大师官方
  • seo建站技术网站百度
  • 微店怎么开店铺系统优化软件哪个最好的
  • 怎么修改自己公司网站百度电话客服
  • 怎么用织梦做网站后台google搜索引擎入口
  • 空壳网站主体注销百度竞价点击工具
  • 关于手机电子商务网站建设域名注册入口
  • 制作微信公众号网站开发什么是关键词举例说明
  • 餐厅网站设计模板下载百度推广一年收费标准
  • 化妆品网站建设策划书搜索引擎优化免费
  • 无锡公共工程建设中心网站搜索引擎优化的基本内容
  • 世界做诡异的地方网站如何做网站的教程
  • 网站建设 学习什么个人博客
  • 共享ip做网站公众号关键词排名优化
  • 如何建立一个网站预算多少广西南宁做网站的公司
  • 安徽网站设计费用uc搜索引擎入口
  • 昆明软件开发公司推荐seo优化评论
  • 江门有那几间公司做网站的门户网站怎么做
  • 如何知道网站开发语言百度在全国有哪些代理商
  • 杭州移动网站建设网络推广方案的内容
  • 易企互联网站建设2345网址导航大全
  • 厚街东莞网站建设海外域名
  • 百度网站怎么做视频播放器网页制作费用大概多少
  • 合肥优化网站哪家公司好什么叫外链
  • 中英文版网站是怎么做的友情贴吧
  • 中国建设银行官网站招聘频道营销的主要目的有哪些
  • 海南网站建设厦门seo测试
  • 公司网站维护教程seo策略分析
  • 新企业在哪里做网站好今日头条新闻头条