㈠ 为什么java中实现多线程的方式有两种
java创建线程的方式有三种
第一种是继承Thread类 实现方法run() 不可以抛异常内 无返回值
第二种是实现Runnable接口 实现方法容run() 不可以抛异常 无返回值
第三种是实现Callable<T>接口,接口中要覆盖的方法是 public <T> call() 注意:此方法可以抛异常,而前两种不能 而且此方法可以有返回值
第三种如何运行呢 Callable接口在util.concurrent包中,由线程池提交
import java.util.concurrent.*;
ExecutorService e = Executors.newFixedThreadPool(10); 参数表示最多可以运行几个线程
e.submit(); 这个里面参数传 实现Callable接口那个类的对象
㈡ Java中,请问在JAVA中实现线程有哪两种方式
1.继承Thread类
2.实现接口 Runnable
都可以的啊
㈢ java多线程,如何实现两个不同的方法
class test1 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
}
public int add(int i){
return i+1;
}
public int del(int j){
return j-1;
}
}
class test2 extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
}
public int add(int i){
return i+1;
}
public int del(int j){
return j-1;
}
}
㈣ java多线程都有几种方式实现
有三种:
(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有几种实现线程的方式
java创建线程的方式有三种
第一种是继承Thread类 实现方法run() 不可以回抛异常 无返回值答
第二种是实现Runnable接口 实现方法run() 不可以抛异常 无返回值
第三种是实现Callable<T>接口,接口中要覆盖的方法是 public <T> call() 注意:此方法可以抛异常,而前两种不能 而且此方法可以有返回值
第三种如何运行呢 Callable接口在util.concurrent包中,由线程池提交
import java.util.concurrent.*;
ExecutorService e = Executors.newFixedThreadPool(10); 参数表示最多可以运行几个线程
e.submit(); 这个里面参数传 实现Callable接口那个类的对象
㈥ java实现线程的两种方法有什么区别
为什么Java要提供两种方法来创建线程呢?它们都有哪些区别?相比而言,哪一种方法更好呢?
在Java中,类仅支持单继承,也就是说,当定义一个新的类的时候,它只能扩展一个外部类.这样,如果创建自定义线程类的时候是通过扩展 Thread类的方法来实现的,那么这个自定义类就不能再去扩展其他的类,也就无法实现更加复杂的功能。因此,如果自定义类必须扩展其他的类,那么就可以使用实现Runnable接口的方法来定义该类为线程类,这样就可以避免Java单继承所带来的局限性。
还有一点最重要的就是使用实现Runnable接口的方式创建的线程可以处理同一资源,从而实现资源的共享.
1、通过扩展Thread类来创建多线程
假设一个影院有三个售票口,分别用于向儿童、成人和老人售票。影院为每个窗口放有100张电影票,分别是儿童票、成人票和老人票。三个窗口需要同时卖票,而现在只有一个售票员,这个售票员就相当于一个CPU,三个窗口就相当于三个线程。通过程序来看一看是如何创建这三个线程的。
[html]view plain
{
privateintticket=100;//每个线程都拥有100张票
publicvoidrun(){
while(ticket>0){
System.out.println(ticket--+"issaledby"+Thread.currentThread());
}
}
}
结果正如前面分析的那样,程序在内存中仅创建了一个资源,而新建的三个线程都是基于访问这同一资源的,并且由于每个线程上所运行的是相同的代码,因此它们执行的功能也是相同的。
可见,如果现实问题中要求必须创建多个线程来执行同一任务,而且这多个线程之间还将共享同一个资源,那么就可以使用实现Runnable接口的方式来创建多线程程序。而这一功能通过扩展Thread类是无法实现的
㈦ java实现多线程的两种方法
Thread t1=new Thread(){
public void run(){
System.out.println("第一种方法");
}
};
t1.start();
Thread t2=new Thread(new Runnable() {
public void run() {
System.out.println("第二种方法,可实专现同类下各线属程数据共享");
}
});
t2.start();
㈧ 1. 写出用Java编写多线程程序的两种常用方法
1、继承Thread,然后生成对象
2、用类A实现runable接口,然后用你实现runnable的类A,生成Thread对象 Thread(A对象);
API 上说明如下:
创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的
run 方法。接下来可以分配并启动该子类的实例。例如,计算大于某一规定值的质数的线程可以写成:
classPrimeThreadextendsThread{
longminPrime;
PrimeThread(longminPrime){
this.minPrime=minPrime;
}
publicvoidrun(){
//
...
}
}
然后,下列代码会创建并启动一个线程:
PrimeThreadp=newPrimeThread(143);
p.start();
创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run
方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。采用这种风格的同一个例子如下所示:
implementsRunnable{
longminPrime;
PrimeRun(longminPrime){
this.minPrime=minPrime;
}
publicvoidrun(){
//
...
}
}
然后,下列代码会创建并启动一个线程:
rimeRunp=newPrimeRun(143);
newThread(p).start();
㈨ java多线程有几种实现方法
java中多线程的实现方法有两种:
1.直接继承thread类;
2.实现runnable接口同步内的实现方法容有五种:1.同步方法;2.同步代码块;3.使用特殊域变量(volatile)实现线程同步;4.使用重入锁实现线程同步;5.使用局部变量实现线程同步
㈩ java中创建线程的两种方式有什么区别
一种是继承 Thread 类,一种是 实现Runnable 接口,需要重写或者实现 run()方法。
没啥区别,因专为java是单继承属的,所以不可能让所有的类都继承Thread类,所以必须有这个Runnable 接口。
一般来说编程都会去 实现Runnble 接口,而不会采用继承Thread。