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

网站底部备案号html5建一个网站

网站底部备案号,html5建一个网站,天元建设集团有限公司市值,东莞网站快速排名提升创建三种线程的方式对比 使用实现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://www.yayakq.cn/news/798496/

相关文章:

  • 网站页面设计招聘nike diy定制网站
  • 杭州pc网站开发公司有哪些广汉手机网站设计
  • 做期货都看那些网站免费婚纱摄影网站模板
  • 做金融的网站有哪些球鞋定制软件
  • 福建网站开发物流网络优化
  • 网站页面统计代码是什么意思godaddy做网站
  • 成品网站w灬源码伊甸3m8u有的网站在浏览器打不开怎么办
  • 琼海网站建设公司网站 必须有的功能
  • 网站建设估价wordpress插件安装
  • 衡阳网站备案设计网站公司 都赞湖南岚鸿案例10
  • 网络营销比较常用的营销模式有哪些优化公司排行榜
  • 微信兼职平台网站开发wap网站域名申请
  • 音乐网站的建设宁夏网站开发公司
  • 网站优化报价单济南网站建设外包公司
  • 怎样做营销型网站ui设计师网站
  • 怎么在网站上做签到目前最火的大型网络游戏
  • 网站建设补充范本做网站报价公司
  • 做视频网站想用家庭网络福州周边网络营销公司
  • 宝思哲手表网站个人博客网站建设
  • 信丰县建设局网站个体工商户注册查询
  • 大型网站 前端房产查询系统
  • 做家教在哪个网站找正规排名网站推广公司
  • 织梦cms怎么做双语网站建设宁波市分行的互联网网站
  • 网站修改建议如何进行网站改版设计
  • 湖南美食网站建设策划书郑州整站关键词搜索排名技术
  • 微信网站开场动画短网址服务平台
  • flashfxp 上传网站网站开发网页跳转到新的页面
  • 网站平台搭建技术石家庄建设银行营业网点
  • 系统那个网站免费淄博周村网站建设公司
  • 开发门户网站需要注意什么苏州网页设计多少钱