Java的多线程创建方法

1. 直接使用Thread来创建

package com.test.tt;

public class ThreadEx extends Thread{
    private int j;

    public void run(){
        for(j=0; j<100;j++){
            System.out.println("当前的线程名称是:"+ getName() + " " +  "当前j的值是:" + j);
        }
    }

    public static void main(String[] args) {
        for(int h=0; h<100;h++){

            if(h==20){
                ThreadEx  threadTest1= new ThreadEx();
                ThreadEx  threadTest2= new ThreadEx();
                threadTest1.start();
                threadTest2.start();
            }

            System.out.println("当前的线程名称是:"+ Thread.currentThread().getName() + " " +  "当前h的值是:" + h);

        }

    }

}

2. 通过实现Runnable接口,并将Runnable实现对象作为Thread的Target的方式创建

package com.test.tt;

public class RunnableEx implements Runnable{

    private int i;
    @Override
    public void run() {
        for(i=0; i<100;i++){
            System.out.println("当前的线程名称是:"+ Thread.currentThread().getName() + " " +  "当前i的值是:" + i);
        }

    }

    public static void main(String[] args) {
        for(int j=0;j<100;j++){
            System.out.println("当前的线程名称是:"+ Thread.currentThread().getName() + " " +  "当前i的值是:" + j);
            if(j==20){
                RunnableEx REx=new RunnableEx();
                Thread thread1 = new Thread(REx, "实例1");
                Thread thread2 = new Thread(REx, "实例2");
                thread1.start();
                thread2.start();
            }
        }

    }

}

3. 通过实现Callable接口的方式创建(这是一个具有返回值的创建方式)

package com.test.tt;

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

public class CallableEx implements Callable{
    @Override
    public Object call() throws Exception {
        int i =0;
        for(;i<1000;i++){
            System.out.println("当前的线程名称是:"+ Thread.currentThread().getName() + " " +  "当前i的值是:" + i);
        }
        return i;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        CallableEx CEx = new CallableEx();
        FutureTask<Integer> task = new FutureTask<Integer>(CEx);

        for(int j=0;j<1000;j++){
            System.out.println("当前的线程名称是:"+ Thread.currentThread().getName() + " " +  "当前i的值是:" + j);
            if(j==200){
                Thread thread1 = new Thread(task, "实例1");
                thread1.start();
            }
        }

        try{
            System.out.println("线程的返回值:" + task.get());
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }

}
时间: 2024-11-07 19:20:24

Java的多线程创建方法的相关文章

java多线程创建方法

1.继承Thread类 2.实现Runnable接口 3.两种实现方法之间的关系 4.实例 sleep是属于Thread类的静态函数. /** * aThread.java * @author cjc */ public class aThread extends Thread { public void run() { for(int i=0;i<10;i++) { System.out.println("The son thread1 is running..."); try

2017第45周一java多线程创建方法

1. 从JDK1.5开始,Java提供了3种方式来创建,启动多线程: Ø 继承Thread类来创建线程类,重写run()方法作为线程执行体. Ø 实现Runnable接口来创建线程类,重写run()方法作为线程执行体. Ø 实现Callable接口来创建线程类,重写run()方法作为线程执行体. 其中第一种方式效果最差,它有2点坏处: l 线程类继承了Thread类,无法在继承其他父类. l 因为每条线程都是一个Thread子类的实例,因此多个线程之间共享数据比较麻烦. 对于第二三种方式,它们的

Java之多线程创建方式

多线程的由来 我们在之前,学习的程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计?要解决上述问题,咱们得使用多进程或者多线程来解决. 多线程的好处: 提高程序运行效率,让CPU的 使用率更高. 多个线程之间互不影响 关于多线程的一些名词解释 并发:指两个或多个事件在同一个时间段内发生. 并行:指两个或多个事件在同一时刻发生(同时发生). 进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程:进程也是

java实现多线程的方法

一.实现方法 1.继承Thread类 2.实现Runnable接口 (一)继承Thread类 对于直接继承Thread的类来说,代码大致框架是: class 类名 extends Thread{ 方法1; 方法2: … public void run(){ // other code… } 属性1: 属性2: … } 先看一个错误的例子: 1 /** 2 * 继承Thread类,直接调用run方法 3 */ 4 class hello extends Thread { 5 private Str

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

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

【搞懂Java多线程之一】多线程相关概念,线程生命周期以及线程创建方法

楼主决定要好好地把Java的多线程给看一下,所以特地来写下博客,内容大部分都是摘抄自网上看到的资料或者书籍,能给出链接的我会给出链接.嗯,希望大家跟楼主一起抱团,加油加油(^ω^)也欢迎关注楼楼的个人博客主页www.anycodex.com. 1.多线程相关概念 程序:为了完成特定任务,用某种语言编写的一组指令集合. 进程:运行中的程序,系统跳读和资源分配的一个独立单位,操作系统会为每一个进程分配一段内存空间. 线程:比进程更小的执行单位,每一个进程可能有多个线程,线程需要放到一个进程中才能执行

java核心学习(二十一) 多线程---创建启动线程的三种方式

本节开始java多线程编程的学习,对于操作系统.进程.线程的基本概念不再赘述,只是了解java对于多线程编程的支持有哪些. 一.继承Thread类来创建线程 java语言中使用Thread类来代表线程,代表线程的类可以通过继承Thread类并重写run()方法来实现多线程开发,调用线程类实例的start方法来启动该线程.下面来试一试 package ThreadTest; public class FirstThread extends Thread{ private int i; public

多线程教程初级教程(一)--创建多线程的方法

1-1:进程和线程的区别是什么? 总结:进程是所有线程的集合,每一个线程是进程中的一条执行路径. 1-2:利用多线程有什么好处 1.提高程序的执行效率,防止阻塞 2.充分利用多核CPU的性能 3.利用多线程可以达到任务以大化小的目的 2-1:利用继承Thread类实现多线程 class CreateThread extends Thread { // run方法中编写 多线程需要执行的代码 publicvoid run() { for (inti = 0; i< 10; i++) { Syste

java中多线程执行时,为何调用的是start()方法而不是run()方法

Thead类中start()方法和run()方法的区别 1,start()用来启动一个线程,当调用start()方法时,系统才会开启一个线程,通过Thead类中start()方法来启动的线程处于就绪状态(可运行状态),此时并没有运行,一旦得到CPU时间片,就自动开始执行run()方法.此时不需要等待run()方法执行完也可以继续执行下面的代码,所以也由此看出run()方法并没有实现多线程. 2,run()方法是在本线程里的,只是线程里的一个函数,而不是多线程的.如果直接调用run(),其实就相当