关闭

黑马程序员_java基础加强6_多线程加强

386人阅读 评论(0) 收藏 举报

---------------------- android培训java培训、期待与您交流! ----------------------




1.创建线程的两种方式:   一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例。如:

class PrimeThread extends Thread{

         longminPrime;

        PrimeThread(long minPrime) {

            this.minPrime = minPrime;

         }

 

      publicvoid run() {

             // compute primes larger thanminPrime

            ?.?.?.

         }

     }

然后,下列代码会创建并启动一个线程:

     PrimeThreadp = new PrimeThread(143);

     p.start();

创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建Thread 时作为一个参数来传递并启动。采用这种风格的同一个

例子如下所示:

     classPrimeRun implements Runnable {

 long minPrime;

        PrimeRun(long minPrime) {

            this.minPrime = minPrime;

         }

         publicvoid run() {

             //compute primes larger than minPrime

              .. .

         }     }

 然后,下列代码会创建并启动一个线程:

     PrimeRun p= new PrimeRun(143);

     newThread(p).start();

Thread类:

构造方法:

Thread()
          分配新的 Thread 对象。

Thread(Runnable target)
          分配新的 Thread 对象。

Thread(Runnable target, String name)
          分配新的 Thread 对象。

Thread(String name)
          分配新的 Thread 对象。

常用方法:

static Thread

currentThread()
          返回对当前正在执行的线程对象的引用。

static int

activeCount()
          返回当前线程的线程组中活动线程的数目。

 long

getId()
          返回该线程的标识符。

 String

getName()
          返回该线程的名称。

 int

getPriority()
          返回线程的优先级。

 void

interrupt()
          中断线程。

static boolean

interrupted()
          测试当前线程是否已经中断。

 boolean

isAlive()
          测试线程是否处于活动状态。

 boolean

isDaemon()
          测试该线程是否为守护线程。

 boolean

isInterrupted()
          测试线程是否已经中断。

 void

join()
          等待该线程终止。

 void

join(long millis)
          等待该线程终止的时间最长为 millis 毫秒。

void

setDaemon(boolean on)
          将该线程标记为守护线程或用户线程。

 void

setName(String name)
          改变线程名称,使之与参数 name 相同。

 void

setPriority(int newPriority)
          更改线程的优先级。

static void

sleep(long millis)
          在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。

 String

toString()
          返回该线程的字符串表示形式,包括线程名称、优先级和线程组。

static void

yield()
          暂停当前正在执行的线程对象,并执行其他线程。

 

例子:

public class Thread1 {

   

public static void main(String[] args) {

        Thread thread = new Thread() {

            public void run() {

                while (true) {

                    try {

                        Thread.sleep(500);

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }

                    System.out.println("yi1:"

                            + Thread.currentThread().getName());

                    System.out.println("yi2:" + this.getName());

                }

            }

        };

        thread.start();

        // 下面不能用this.getName()

        Thread thread2 = new Thread(new Runnable() {

            public void run() {

                while (true) {

                    try {

                        Thread.sleep(500);

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }

                    System.out.println("er1:"

                            + Thread.currentThread().getName());

                }

            }

        });

        thread2.start();

 

        new Thread(new Runnable() {

            public void run() {

                while (true) {

                    try {

                        Thread.sleep(500);

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }

                    System.out.println("san runnable:"

                            + Thread.currentThread().getName());

 

                }

            }

        }) {

            public void run() {

                while (true) {

                    try {

                        Thread.sleep(500);

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }

                    System.out.println("san thread :"

                            + Thread.currentThread().getName());

 

                }

            }

        }.start();

    }}

运行的是Thread重写的方法,不是Runnable中的run方法。

 






---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:64049次
    • 积分:1126
    • 等级:
    • 排名:千里之外
    • 原创:49篇
    • 转载:0篇
    • 译文:0篇
    • 评论:12条
    文章存档