java实现多线程初探

java实现多线程初探

概述:

在 Java 程序中使用多线程要比在 C 或 C++ 中容易得多,这是因为 Java 编程语言提供了语言级的支持。在java中使用多线程可以基于两种方式:继承Thread类和实现Runnable接口

1、基于Thread实现多线程

MyThread Code

/**
* @author xuyi3
* @2016年4月7日 @上午10:46:44
* @MyThread
* @功能说明:通过继承Thread类来使用线程<br>
*                           春风十里不如你
*/
public class MyThread extends Thread {

@Override
public void run() {
    for (int i = 0; i < 10; i++) {
        System.out.println(Thread.currentThread().getName() + i);
    }
}
}

AppMain Code

    public class AppMain {
    public static void main(String[] args) {

    MyThread myThread = new MyThread();
    myThread.start();// 这个线程启动一定要比下面主线程打印更早,否则就看不出多线程执行效果了。
    printInfo();

}

static void printInfo() {
    for (int i = 0; i < 10; i++) {
        System.out.println(Thread.currentThread().getName() + "主线程" + i);
    }
}
}

说明:通过观察执行结果就知道主线程和自定义线程是随机执行的(抢占式获得CPU执行权)


2、基于Runnable实现多线程

MyRunnable Code

/**
* @author xuyi3
* @2016年4月7日 @上午10:57:31
* @MyRunnable
* @功能说明:通过实现Runnable接口来达到使用多线程目的<br>
* @春风十里不如你
* @备注:通过实现Runnable接口方式更灵活,也更方便扩展。
*/
public class MyRunnable implements Runnable {

@Override
public void run() {
    for (int i = 0; i < 10; i++) {
        System.out.println(Thread.currentThread().getName() + i);
    }
}
}

AppMain Code

public class AppMain {

public static void main(String[] args) {

    MyRunnable myRunnable = new MyRunnable();
    // 实现Runnable接口的类要想启动多线程必须要依赖于Thread类来启动线程
    new Thread(myRunnable, "自定义线程").start();// 这个线程启动一定要比下面主线程打印更早,否则就看不出多线程执行效果了。
    printInfo();

}

static void printInfo() {
    for (int i = 0; i < 10; i++) {
        System.out.println(Thread.currentThread().getName() + "主线程" + i);
    }
}
}

说明:通过观察执行结果就知道主线程和自定义线程是随机执行的(抢占式获得CPU执行权)

1、推荐使用实现Runnable接口的方式来达到多线程执行的目的
2、启动线程只能是Thread的start()方法才能启动,run方法存放的知识多线程运行的代码。
3、多线程是由操作系统提供支持的

start 方法源码查看

private native void start0();//JDK源码看到的是本地方法,即C/C++写的操作系统的方法

3、简单说明

在java程序启动的时候就已经有两个线程启动,一个main线程和一个GC线程(守护线程)。main方法是java程序的入口,通常可以将线程当做一条执行路径来理解。

参考

  1. https://www.ibm.com/developerworks/cn/java/multithreading/
  2. https://www.ibm.com/developerworks/cn/java/j-concurrent/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值