导航:首页 > 编程语言 > java多线程thread

java多线程thread

发布时间:2022-06-09 05:37:05

❶ 如何在java 中实现多线程

1、继承Thread类创建线程
Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。例如:
复制代码

public class MyThread extends Thread {
public void run() {
System.out.println("MyThread.run()");
}
}

MyThread myThread1 = new MyThread();
MyThread myThread2 = new MyThread();
myThread1.start();
myThread2.start();

❷ Java中如何用Thread类实现多线程

定义类实现Thread或实现Runnable接口。示例代码如下:

importjava.util.Random;

publicclassMultiThread{

publicstaticvoidmain(Stringargs[])throwsInterruptedException{

System.out.println("使用继承Thread的方式实现");
for(inti=0;i<10;i++){
MyThreadt=newMyThread("thread_"+i);
t.start();
}

Thread.sleep(1000);
System.out.println("使用实现Runnable接口的方式实现");
for(inti=10;i<20;i++){
MyThread2t=newMyThread2("thread_"+i);
newThread(t).start();
}
}
}

classMyThreadextendsThread{
privateStringthreadName;

publicMyThread(StringthreadName){
this.threadName=threadName;
}

@Override
publicvoidrun(){
longsleep=newRandom().nextInt(100)+100;
try{
//随机延迟一段时间
Thread.sleep(sleep);
}catch(InterruptedExceptione){
e.printStackTrace();
}
System.out.println(threadName+"开始执行...");
}
}

{

privateStringthreadName;

publicMyThread2(StringthreadName){
this.threadName=threadName;
}

@Override
publicvoidrun(){
longsleep=newRandom().nextInt(100)+100;
try{
//随机延迟一段时间
Thread.sleep(sleep);
}catch(InterruptedExceptione){
e.printStackTrace();
}
System.out.println(threadName+"开始执行...");
}
}

❸ java,线程Thread(Runnable target)

你的理解很正确,只要是实现了Runnable接口的类都可以传进去。
这个参数可以是API中已经有的,也可以是自己写的。
常用的创建线程的方法有两种,第一种就是继承Thread类,直接new
出来就可以,Thread类本身也实现了Runnable接口。
第二种方法就是实现Runnable接口里面的run方法。
语法正如你的代码一样

❹ java 如何实现多线程

线程间的通信方式
同步
这里讲的同步是指多个线程通过synchronized关键字这种方式来实现线程间的通信。
参考示例:
public class MyObject {
synchronized public void methodA() {
//do something....
}
synchronized public void methodB() {
//do some other thing
}
}
public class ThreadA extends Thread {
private MyObject object;
//省略构造方法
@Override
public void run() {
super.run();
object.methodA();
}
}
public class ThreadB extends Thread {
private MyObject object;
//省略构造方法
@Override
public void run() {
super.run();
object.methodB();
}
}
public class Run {
public static void main(String[] args) {
MyObject object = new MyObject();
//线程A与线程B 持有的是同一个对象:object
ThreadA a = new ThreadA(object);
ThreadB b = new ThreadB(object);
a.start();
b.start();
}
}
由于线程A和线程B持有同一个MyObject类的对象object,尽管这两个线程需要调用不同的方法,但是它们是同步执行的,比如:线程B需要等待线程A执行完了methodA()方法之后,它才能执行methodB()方法。这样,线程A和线程B就实现了 通信。
这种方式,本质上就是“共享内存”式的通信。多个线程需要访问同一个共享变量,谁拿到了锁(获得了访问权限),谁就可以执行。

❺ java thread 是真的多线程吗

双核cpu你可以理解为两块cpu,4核、8核等以此类推,就单个cpu而言某个时间点只能是一个线程在运行, 所谓的多线程是通过调度获取cpu的时间片实现的 其实就相当于 cpu是一个人 多线程是几件事

❻ java线程Thread和Runnable的区别

JAVA多线程实现方式:继承Thread类、实现Runnable接口1、继承Thread类实现多线程继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extendThread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法2、实现Runnable接口方式实现多线程如果自己的类已经extends另一个类,就无法直接extendsThread,此时,必须实现一个Runnable接口

❼ java 多线程 继承Thread和实现Runnable的区别

Java中线程的创建有两种方式:

1、 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中

2、 通过实现Runnable接口,实例化Thread类

Runnable
接口只有一个方法 run(),我们声明自己的类实现 Runnable
接口并提供这一方法,将我们的线程代码写入其中,就完成了这一部分的任务。但是 Runnable 接口并没有任何对线程的支持,我们还必须创建
Thread 类的实例,这一点通过 Thread 类的构造函数public Thread(Runnable target);来实现。

3、继承Thread实现的模式是 定义多个线程,各自完成各自的任务.

4、实现Runnable实现的模式是 定义多个线程,实现一个任务.

总结:一个是多个线程分别完成自己的任务,一个是多个线程共同完成一个任务。其实,在实现一个任务用多个线程来做也可以用继承Thread类来实现,只是比较麻烦,一般我们用实现Runnable接口来实现。

❽ JAVA多线程有哪几种实现方式

JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。

1、继承Thread类实现多线程
继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。例如:

[java]view plain

❾ 在Java 中多线程的实现方法有哪些,如何使用

1、 认识Thread和Runnable

Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口。Runnable是接口,建议用接口的方式生成线程,因为接口可以实现多继承,况且Runnable只有一个run方法,很适合继承。在使用Thread的时候只需继承Thread,并且new一个实例出来,调用start()方法即可以启动一个线程。

Thread Test = new Thread();

Test.start();

在使用Runnable的时候需要先new一个实现Runnable的实例,之后启动Thread即可。

Test impelements Runnable;

Test t = new Test();

Thread test = new Thread(t);

test.start();

总结:Thread和Runnable是实现java多线程的2种方式,runable是接口,thread是类,建议使用runable实现java多线程,不管如何,最终都需要通过thread.start()来使线程处于可运行状态。

2、 认识Thread的start和run

1) start:

用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到spu时间片,就开始执行run()方法,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。

2) run:

run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。

总结:调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。

3、 线程状态说明

线程状态从大的方面来说,可归结为:初始状态、可运行状态、不可运行状态和消亡状态,具体可细分为上图所示7个状态,说明如下:

1) 线程的实现有两种方式,一是继承Thread类,二是实现Runnable接口,但不管怎样,当我们new了thread实例后,线程就进入了初始状态;

2) 当该对象调用了start()方法,就进入可运行状态;

3) 进入可运行状态后,当该对象被操作系统选中,获得CPU时间片就会进入运行状态;

4) 进入运行状态后case就比较多,大致有如下情形:

·run()方法或main()方法结束后,线程就进入终止状态;

·当线程调用了自身的sleep()方法或其他线程的join()方法,就会进入阻塞状态(该状态既停止当前线程,但并不释放所占有的资源)。当sleep()结束或join()结束后,该线程进入可运行状态,继续等待OS分配时间片;

·当线程刚进入可运行状态(注意,还没运行),发现将要调用的资源被锁牢(synchroniza,lock),将会立即进入锁池状态,等待获取锁标记(这时的锁池里也许已经有了其他线程在等待获取锁标记,这时它们处于队列状态,既先到先得),一旦线程获得锁标记后,就转入可运行状态,等待OS分配CPU时间片;

·当线程调用wait()方法后会进入等待队列(进入这个状态会释放所占有的所有资源,与阻塞状态不同),进入这个状态后,是不能自动唤醒的,必须依靠其他线程调用notify()或notifyAll()方法才能被唤醒(由于notify()只是唤醒一个线程,但我们由不能确定具体唤醒的是哪一个线程,也许我们需要唤醒的线程不能够被唤醒,因此在实际使用时,一般都用notifyAll()方法,唤醒有所线程),线程被唤醒后会进入锁池,等待获取锁标记。

·当线程调用stop方法,即可使线程进入消亡状态,但是由于stop方法是不安全的,不鼓励使用,大家可以通过run方法里的条件变通实现线程的stop。

阅读全文

与java多线程thread相关的资料

热点内容
显示当前模式下所有可执行的命令 浏览:758
为什么程序员拿了股份还要高薪 浏览:946
电脑运行命令里的记录能删吗 浏览:697
linuxwss 浏览:848
一个软件需要登录服务器地址 浏览:923
哪里有解压程序 浏览:299
java静态方法内存 浏览:545
我的世界ec服务器如何带vip 浏览:737
什么是由解析器域名和服务器构成 浏览:414
自动识别电影信息源码 浏览:849
柱筋箍筋加密区怎么算 浏览:48
钢筋中加密15倍是什么意思 浏览:366
esc加密算法 浏览:518
linux运行exe命令 浏览:124
一级建造师管理pdf 浏览:720
如何更改服务器登录账号 浏览:317
看pdf文件软件 浏览:183
android恢复模式 浏览:808
生命令人忧 浏览:597
魔兽搬砖怎么选择服务器 浏览:771