线程的实现

简介:

一、在Java中,线程的实现有2种

    1.继承Thread类

    2.实现Runable接口


二、Thread类

    Thread类是在java.lang包中定义的,继承Thread类必须重写run()

    定义格式:class className extends Thread{

            public void run(){}

         }    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public  static  void  main(String[] args) {
         
         MyThread t1 =  new  MyThread( "A" );
         MyThread t2 =  new  MyThread( "B" );
         
//      t1.run();
//      t2.run();
         
         //线程的启动是通过start()
         t1.start();
         t2.start();
         
     }
     
public  class  MyThread  extends  Thread{
     
     private  String name;  //标识线程的名称
     
     public  MyThread(String name){
         this .name = name;
     }
     
     //在run()中为了能看出来,使用一个for循环进行打印输出
     public  void  run(){
         
         for ( int  i= 0 ; i< 10 ; i++){
             System.out.println(name+ ":" +i);
         }
         
     }
}


三、Runnable接口 

    Runnable 接口应该由那些打算通过某一线程执行其实例的类来实现。

    设计该接口的目的是为希望在活动时执行代码的对象提供一个公共协议。例如,Thread 类实现了 Runnable。激活的意思是说某个线程已启动并且尚未停止。

    Thread类是在java.lang包中定义的,继承Thread类必须重写run()

    Runnable 为非 Thread 子类的类提供了一种激活方式。通过实例化某个 Thread 实例并将自身作为运行目标,就可以运行实现 Runnable 的类而无需创建 Thread 的子类。大多数情况下,如果只想重写 run() 方法,而不重写其他 Thread方法,那么应使用 Runnable 接口。这很重要,因为除非程序员打算修改或增强类的基本行为,否则不应为该类创建子类。

    

    定义格式:class className implements Runnable{

            public void run(){}

         } 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public  static  void  main(String[] args) {
         
         MyRunable r1 =  new  MyRunable( "A" );
         MyRunable r2 =  new  MyRunable( "B" );
         
         Thread t1 =  new  Thread(r1);
         Thread t2 =  new  Thread(r2);
         
         t1.start();
         t2.start();
         
     }
     
public  class  MyRunable  implements  Runnable{
     
     private  String name;
     
     public  MyRunable(String name){
         this .name = name;
     }
     
     public  void  run(){
         for ( int  i= 0 ; i< 1000 ; i++){
             System.out.println(name+ ":" +i);
         }
     }
     
}


本文转自yeleven 51CTO博客,原文链接:http://blog.51cto.com/11317783/1775214

相关文章
|
2月前
|
存储 安全 Java
C++线程浅谈
C++线程浅谈
|
4月前
|
C#
C#线程初步
C#线程初步
19 0
|
10月前
|
算法 NoSQL Java
02.关于线程你必须知道的8个问题(上)
大家好,我是王有志,欢迎来到《Java面试都问啥?》。 今天我们来一起看看在面试中,关于线程各大公司大都喜欢问哪些问题。
81 1
02.关于线程你必须知道的8个问题(上)
|
10月前
|
Java Linux 程序员
04.关于线程你必须知道的8个问题(下)
大家好,我是王有志。今天是Java面试中线程问题的最后一部分内容,包括我们来聊同步与互斥,线程的本质,调度,死锁以及线程的优缺点等问题。
91 1
04.关于线程你必须知道的8个问题(下)
|
10月前
|
Java
线程理解
个人学习理解
59 0
|
10月前
|
传感器 存储 自动驾驶
(6)线程
(6)线程
72 0
|
Java 编译器 Linux
初识 线程
初识 线程
86 0
初识 线程
|
C++
C++ | C++线程
c++创建线程的方式不止一种。
97 0
|
Java
什么是线程
什么是线程
106 0