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

原创 2012年03月27日 13:43:33

---------------------- 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

相关文章推荐

黑马程序员----------java基础加强之多线程、单例设计模式

----------------------android培训、java培训、期待与您交流! ---------------------- 虽然老师...

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

---------------------- android培训、java培训、期待与您交流! ---------------------- 8.用Lock实现线程间的通信:...

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

---------------------- android培训、java培训、期待与您交流! ---------------------- 2. 定时器的使用: Ti...

黑马程序员——JAVA基础----多线程(一)

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------ 多线程(一) 01_多线程(多线程的引入) 1.什么是线程...
  • Du_jing
  • Du_jing
  • 2015年11月05日 15:07
  • 165

黑马程序员_java基础_多线程

------- android培训、java培训、期待与您交流!--------- 多线程 一、多线程的概述       要理解多线程,就必须理解线程。而要理解线程,就必须知道进程。 ...
  • LFB168
  • LFB168
  • 2015年09月18日 19:22
  • 334

黑马程序员——高新技术---Java基础-多线程1

1:要想了解多线程,必须先了解线程,而要想了解线程,必须先了解进程,因为线程是依赖于进程而存在。   2:什么是进程? 通过任务管理器我们就看到了进程的存在。 而通过观察,我们发现只有运行的程序才会出...

黑马程序员-----java基础中多线程

------Java培训、Android训、iOS培训、Net培训、期待与您交流!------

黑马程序员——Java基础---多线程<二>

——- android培训、java培训、期待与您交流! ——– 5线程安全问题问题演示 一数据错乱 问题分析 解决方案 具体方法 问题演示 二死锁 概念原因条件 死锁 一请求与保持条件 问题分析 解...
  • mu_se
  • mu_se
  • 2015年06月06日 21:03
  • 274

黑马程序员—Java基础—多线程2

------- android培训、java培训、期待与您交流! ---------- 多线程2 一、线程间通信...

黑马程序员————Java基础日常笔记---对多线程的理解

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! 1,线程的由来: 1.1:进程与线程的理解: 进程是一个执行中的程序, 每一个进程执行都有一个执行的顺序...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员_java基础加强6_多线程加强
举报原因:
原因补充:

(最多只允许输入30个字)