黑马程序员技术交流社区
标题: 黑马程序员——Java基础---多线程 [打印本页]
作者: Super_Nos 时间: 2015-5-7 20:32
标题: 黑马程序员——Java基础---多线程
本帖最后由 Super_Nos 于 2015-5-11 21:52 编辑
JAVA多线程----创建与启动
以前写的帖子都是题解,第一次写这种技术贴(算不上技术贴,顶天是个随笔!),这篇帖子主要讲解多线程,主要还是写一些例子,写的不好请见谅,希望能和大家多多交流!
java中实现多线程有三种方法,继承Thread类,实现Runnable接口,这两种都是线程执行完后无返回值的,使用ExecutorService、Callable、Future实现多线程,这样的线程结束后有返回值。
1.继承Thread类实现多继承
继承Thread类的方法比较简单,直接自己的类extends Thread就可以,个人感觉这个方法还是基于实现Runnable接口。
- class 类名 extends Thread {}
复制代码 复写run()方法,在run()方法里面写上多线程要执行的代码。
- class Mythread extends Thread{
- public void run(){
- for(int i = 0; i < 5; i ++)
- System.out.println(i);
- }
- }
复制代码 启动线程的唯一方式就是调用start()方法。
为什么不直接调用run()方法呢?
对Java来说,run()方法没有任何特别之处。像main()方法一样,它只是新线程知道调用的方法名称。
而start()却不同,在调用start()方法之前:线程处于新状态中,新状态指有一个Thread对象,但还没有一个真正的线程。
在调用start()方法之后会启动新的执行线程(具有新的调用栈),该线程从新状态转移到可运行状态,当该线程获得机会执行时,其目标run()方法将运行。
- class Mythread extends Thread{
- private String name;
- public Mythread(String name){
- this.name = name;
- }
- public void run(){
- for(int i = 0; i < 1000; i ++)
- System.out.println(name + "线程: " + i);
- }
- }
- public class Test {
- public static void main(String[] args) {
- Mythread mt1 = new Mythread("A");
- Mythread mt2 = new Mythread("B");
- mt1.start();
- mt2.start();
- }
- }
复制代码 每次的执行结果都不一样。根据CPU的执行速率不同,可以对 i 值的范围进行改变。
今天到这,明天继续~~
作者: xiaowen_wu 时间: 2015-5-7 20:37
挺好的,坚持每天总结
作者: Super_Nos 时间: 2015-5-7 20:38
加油
作者: KK要有光 时间: 2015-5-11 18:43
特意来看了你的帖子,谢谢分享,很有用,学习了。
作者: Super_Nos 时间: 2015-5-11 19:11
大家多交流~加油~~
作者: KK要有光 时间: 2015-5-11 19:55
okok,有了问题多交流。
作者: bboyXiaoNuo 时间: 2015-5-11 21:03
不错。。。。。。挺好的,加油
作者: Super_Nos 时间: 2015-5-11 21:08
以后多交流~
作者: Cat 时间: 2015-5-11 21:18
学习一下
作者: Super_Nos 时间: 2015-5-11 21:30
以后多交流~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |