java多线程有几种实现方法,都是什么?

转自:http://www.cnblogs.com/liujichang/p/3150387.html

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口

同步的实现方法有两种,分别是synchronized,wait与notify

先看一下java线程运行时各个阶段的运行状态

java实现多线程有两种方法

1、继承Thread类

2、实现Runnable接口

这两种方法的共同点:

不论用哪种方法,都必须用Thread(如果是Thead子类就用它本身)产生线程,然后再调用start()方法。

两种方法的不同点:

1、继承Thread类有一个缺点就是单继承,而实现Runnable接口则弥补了它的缺点,可以实现多继承

2、继承Thread类必须如果产生Runnable实例对象,就必须产生多个Runnable实例对象,然后再用Thread产生多个线程;而实现Runnable接口,只需要建立一个实现这个类的实例,然后用这一个实例对象产生多个线程。即实现了资源的共享性

基于以上两点所以建议用第二种方法

 1 package cn.itcast.demo1;
 2
 3 public class MyThread extends Thread {
 4     private String name;
 5     public MyThread(String name){
 6         this.name = name;
 7     }
 8     //如果要使用多线程,则必须有一个方法的主体
 9     public void run(){
10         //打印输出
11         for(int i = 0;i < 10; i++){
12             System.out.println(this.name + "----->运行");
13         }
14     }
15
16 }
 1 package cn.itcast.demo1;
 2
 3 public class Demo5 {
 4     public static void main(String[] args) {
 5         Runnable r1 = new MyThread("线程一");
 6         Runnable r2 = new MyThread("线程二");
 7         Runnable r3 = new MyThread("线程三");
 8
 9         Thread t1 = new Thread(r1);
10         Thread t2 = new Thread(r2);
11         Thread t3 = new Thread(r3);
12
13         t1.start();
14         t2.start();
15         t3.start();
16
17     }
18
19
20 }
 1 package cn.itcast.demo1;
 2
 3 public class Demo6 {
 4
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         MyThread mt1 = new MyThread("线程A");
 8         MyThread mt2 = new MyThread("线程B");
 9         MyThread mt3 = new MyThread("线程C");
10
11         mt1.start();
12         mt2.start();
13         mt3.start();
14
15     }
16
17 }

这是继承了Thread类,第一种方法产生多个Runnable实例对象,然后用Thread产生多个线程

第二种方法,因为这个类已经继承了Thread类,所以就可以直接利用它本身产生多个线程

程序2:

 1 package cn.itcast.demo1;
 2
 3 public class MyThread1 implements Runnable {
 4     private int ticket = 10;
 5
 6     @Override
 7     public void run() {
 8         // TODO Auto-generated method stub
 9         for(int i = 0; i < 500;i++){
10             if(this.ticket > 0){
11                 System.out.println("卖票------》" + (this.ticket--));
12             }
13         }
14
15     }
16
17 }
 1 package cn.itcast.demo1;
 2
 3 public class Demo7 {
 4
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         MyThread1 mt = new MyThread1();
 8         Thread t1 = new Thread(mt);
 9         Thread t2 = new Thread(mt);
10         Thread t3 = new Thread(mt);
11
12         t1.start();
13         t2.start();
14         t3.start();
15
16
17     }
18
19 }

这个程序是实现Runnable了,产生一类的实例对象,然后用Thread产生多个线程。

时间: 2024-12-21 21:58:33

java多线程有几种实现方法,都是什么?的相关文章

java多线程有几种实现方法?线程之间如何同步

java中多线程的实现方法有两种:1.直接继承thread类:2.实现runnable接口: 同步的实现方法有五种:1.同步方法:2.同步代码块:3.使用特殊域变量(volatile)实现线程同步:4.使用重入锁实现线程同步:5.使用局部变量实现线程同步 .其中多线程实现过程中需注意重写或者覆盖run()方法,而对于同步的实现方法中使用较常使用的是利用synchronized编写同步方法和代码块.

多线程有几种同步有几种实现方法,都是什么?

多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify 关于Cookie的路径及Cookie的获取问题? Cookie c1=new Cookie"cname","c1"); c1.setPath"/MyApp"); c1.setMaxAgeInteger.MAX_VALUE); respo

java中实现多线程的两种基本方法

java中实现多线程有两种基本方法,一种是继承Thread, 另一种是实现Runnable接口. 但是因为java中子类只能继承一个父类,如果采用继承Thread类,就不能继承其他类,很受限制. 以下是采用继承Thread类的例子: public class MyThreadTest{ public static void main(String[] args){ MyThread amythread1=new MyThread("my thread 1"); MyThread amy

【Java多线程】两种基本实现框架

Java多线程学习1——两种基本实现框架 一.前言 当一个Java程序启动的时候,一个线程就立刻启动,改程序通常也被我们称作程序的主线程.其他所有的子线程都是由主线程产生的.主线程是程序开始就执行的,并且程序最终是以主线程的结束而结束的. Java编写程序都运行在在Java虚拟机(JVM)中,在JVM的内部,程序的多任务是通过线程来实现的.每用Java命令启动一个Java应用程序,就会启动一个JVM进程.在同一个JVM进程中,有且只有一个进程,就是它自己.在这个JVM环境中,所有程序代码的运行都

python多线程有几种实现方法

python多线程有几种实现方法,都是什么? 目前python 提供了几种多线程实现方式 thread,threading,multithreading ,其中thread模块比较底层,而threading模块是对thread做了一些包装,可以更加方便的被使用.2.7版本之前python对线程的支持还不够完善,不能利用多核CPU,但是2.7版本的python中已经考虑改进这点,出现了multithreading  模块.threading模块里面主要是对一些线程的操作对象化,创建Thread的c

多线程有几种实现方法?同步有几种实现方法?(被问到)

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify wait():使一个线程处于等待状态,并且释放所持有的对象的lock. sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常. notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且

多线程有几种实现方法?同步有几种实现方法?

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify wait():使一个线程处于等待状态,并且释放所持有的对象的lock. sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常. notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且

第五周作业(Java多线程创建的三个方法)

我最近在学习Java中多线程,并且觉得多线程这块在以后的Java开发中显得极为重要,就谈一下Java实现多线程的三种方式. JAVA多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程.其中前两种方式线程执行完后都没有返回值,只有第三种是带返回值的,这种方式一般要求比较高,并且较前两种难一些. 1.继承Thread类实现多线程继承Thread类的本质上也是实现了Runnable接口的一个实

实现Java多线程的三种方式

1. JAVA多线程实现方式    JAVA多线程实现方式主要有三种: 继承Thread类 实现Runnable接口 使用ExecutorService.Callable.Future实现有返回结果的多线程. 其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的. 2. 继承Thread类实现多线程 继承Thread类的方法尽管被我列为一种多线程实现方式,但 Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread