怎么用JAVA方法求2个数里面最大的数
那个的大哥说下哈用方法求
更新时间:2022-04-26 10:04
最满意答案
JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。 1、继承Thread类实现多线程 继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。例如: [java] view plain copy public class MyThread extends Thread { public void run() { System.out.println("MyThread.run()"); } } 在合适的地方启动线程如下: [java] view plain copy MyThread myThread1 = new MyThread(); MyThread myThread2 = new MyThread(); myThread1.start(); myThread2.start(); 2、实现Runnable接口方式实现多线程 如果自己的类已经extends另一个类,就无法直接extends Thread,此时,必须实现一个Runnable接口,如下: [java] view plain copy public class MyThread extends OtherClass implements Runnable { public void run() { System.out.println("MyThread.run()"); } } 为了启动MyThread,需要首先实例化一个Thread,并传入自己的MyThread实例: [java] view plain copy MyThread myThread = new MyThread(); Thread thread = new Thread(myThread); thread.start(); 事实上,当传入一个Runnable target参数给Thread后,Thread的run()方法就会调用target.run(),参考JDK源代码: [java] view plain copy public void run() { if (target != null) { target.run(); } } 3、使用ExecutorService、Callable、Future实现有返回结果的多线程 ExecutorService、Callable、Future这个对象实际上都是属于Executor框架中的功能类。想要详细了解Executor框架的可以访问http://www.javaeye.com/topic/366591 ,这里面对该框架做了很详细的解释。返回结果的线程是在JDK1.5中引入的新特征,确实很实用,有了这种特征我就不需要再为了得到返回值而大费周折了,而且即便实现了也可能漏洞百出。 可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了,再结合线程池接口ExecutorService就可以实现传说中有返回结果的多线程了。下面提供了一个完整的有返回结果的多线程测试例子,在JDK1.5下验证过没问题可以直接使用。
其他回答
有三种: (1)继承thread类,重写run函数 创建: class xx extends thread{ public void run(){ thread.sleep(1000) //线程休眠1000毫秒,sleep使线程进入block状态,并释放资源 }} 开启线程: 对象.start() //启动线程,run函数运行 (2)实现runnable接口,重写run函数 开启线程: thread t = new thread(对象) //创建线程对象 t.start() (3)实现callable接口,重写call函数 callable是类似于runnable的接口,实现callable接口的类和实现runnable的类都是可被其它线程执行的任务。 callable和runnable有几点不同: ①callable规定的方法是call(),而runnable规定的方法是run(). ②callable的任务执行后可返回值,而runnable的任务是不能返回值的 ③call()方法可抛出异常,而run()方法是不能抛出异常的。 ④运行callable任务可拿到一个future对象,future表示异步计算的结果。它提供了检查计算是否完成的方法,以等 待计算的完成,并检索计算的结果.通过future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果
相关问答
更多-
JAVA多线程有哪几种实现方式[2023-07-09]
JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。 1、继承Thread类实现多线程 继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个na ... -
java工厂模式哪几种[2022-07-14]
工厂模式负责将大量有共同接口的类实例化。工厂模式可以决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。 工厂模式的几种形态: l 简单工厂模式。又称静态工厂模式。 l 工厂方法模式。Factory Method,又称多态工厂或虚拟构造子模式(Virtual Constructor)。 l 抽象工厂模式。Abstract Factory,又称工具箱(Kit或ToolKit)模式。 工厂模式的逐步递演反映了抽象的步步加深、解决问题 参考资料: http://dev.csdn.net/develop/art ... -
java swing 布局方式有哪几种[2022-04-19]
BorderLayout, BoxLayout, CardLayout, DefaultMenuLayout, FlowLayout, GridBagLayout, GridLayout, GroupLayout swing里常用的也有这些,至于每个具体的功能自己查一下API就可以了。 -
python 序列赋值有哪几种情况[2022-01-12]
这个很好理解,slice切片就是将shoplist内不特定的一组序列存到另一块开辟的内存里。虽然你是将shoplist的全部转存到mylist但,它只是slice中的一种特列。第一次mylist = shoplist 相当于C语言中的内存指针指向同一片内存区域中。第二次mylist = shoplist和C语言中的内存复制是一个道理。 另一位朋友说是浅拷贝,我有不同看法,应该是深拷贝。slice在内存中重新申请了一片区域,是再一次重新建立的数据。改变原有元素的值,并不会改变新变量里的值。 可以通过对元素重新 ... -
Java GUI中有哪几种常用的布局方式,各有什么特点?[2021-10-23]
FlowLayout流式布局 BorderLayout边界布局 GridLayout网格布局 CardLayout卡片布局 GridBagLayout网络包布局 -
java 开发程序员 需要掌握哪几种常用的设计模式?[2023-08-25]
实践出真知 简单工厂模式 策略模式 观察者模式 根据自身的项目需求决定 -
使用tomcat部署java工程,通常有哪几种方式[2022-05-06]
第一种方法:在tomcat中的conf目录中,在server.xml中的,节点中添加: -
VB 能用哪几种方式使用多线程(不是VB 。net 是VB6)[2021-12-31]
VB一般情况下不支持多线程! 不过可以用API来做! -
HTTP协议有哪几种方式?[2023-12-29]
客户程序向服务器发送的请求可以有不同的类型,这样服务器可以根据不同的请求类型进行不同的处理。在HTTP1.0中,定义了三种最基本的请求类 型,GET、POST和HEAD,客户程序用大写指令将请求发送给服务器,后面跟随具体的数据。 其中,HEAD请求在客户程序和服务器之间进行交流,而不会返回具体的文档。当使用GET和POST方法时,服务器最后都将结果文档返回给客户程序,浏览器将 刷新显示。而HEAD请求则不同,它仅仅交流一些内部数据,这些数据不会影响浏览的过程。因此HEAD方法通常不单独使用,而是和其他的请求 ... -
处理死锁的基本方法有哪几种,并分析它们的优缺点。[2024-03-26]
一个信号量只能置一次初值,以后只能对之进行p操作或v操作。由此也可以看到,信号量机制必须有公共内存,不能用于分布式操作系统,这是它最大的弱点。信号量机制功能强大,但使用时对信号量的操作分散, 而且难以控制,读写和维护都很困难。加重了程序员的编码负担;核心操作P-V分散在各用户程序的代码中,不易控制和管理;一旦错误,后果严重,且不易发现和纠正。 (b)自旋锁: 旋锁是为了保护共享资源提出的一种锁机制。调用者申请的资源如果被占用,即自旋锁被已经被别的执行单元保持,则调用者一直循环在那里看是否该自旋锁的保持着已经 ...