黑马程序员_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基础:基础加强

Java enhance
  • zr523725410
  • zr523725410
  • 2014年09月26日 00:24
  • 2310

黑马程序员-张孝祥Java基础加强(PART1)

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- 知识点: 1.Java5的几个新特性,...
  • niniliwei
  • niniliwei
  • 2014年02月28日 15:30
  • 1083

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

---------------------- android培训、java培训、期待与您交流! ---------------------- 8.用Lock实现线程间的通信:...
  • liuxu93466
  • liuxu93466
  • 2012年03月30日 08:44
  • 515

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

---------------------- android培训、java培训、期待与您交流! ---------------------- 2. 定时器的使用: Ti...
  • liuxu93466
  • liuxu93466
  • 2012年03月27日 13:48
  • 395

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

---------------------- android培训、java培训、期待与您交流! ---------------------- 5.多个线程访问共享对象和数据的方式   ...
  • liuxu93466
  • liuxu93466
  • 2012年03月27日 13:52
  • 407

htML+CSS3-》第3阶段:HTML5之CSS3基础与加强 中

HTML+CSS3-》第3阶段:HTML5之CSS3基础与加强 中 60前端开发基础视频-复合选择器之子元素选择器 子元素选择器,是让css选择器智能选择子辈的元素。     例如...
  • u014222687
  • u014222687
  • 2016年06月19日 22:59
  • 6594

黑马程序员--java多线程加强

------- android培训、java培训、期待与您交流! ----------     继之前的java多线程后,今天我们再来研究下多线程更深一些的东西。     首先:Threa...
  • wangyang0518
  • wangyang0518
  • 2012年11月28日 01:19
  • 91

C#-基础加强(1)

1.背景 ,所在的专业是 软件工程net方向,所以在2013年就开始学习C#语言,那时候就会写个小程序,比如贪吃蛇什  么的,后接触了网站,觉得很有趣,就开始加强基础学习。 2.在2014年寒假在...
  • LABLENET
  • LABLENET
  • 2015年08月02日 20:20
  • 571

黑马程序员_java基础加强

----------------- android培训、java培训、期待与您交流! ----------
  • cuzval
  • cuzval
  • 2013年10月04日 19:29
  • 278

黑马程序员Java基础加强

------- android培训、java培训、期待与您交流! ---------- 黑马程序员Java基础加强 1.  泛型是JDK1.5中一个最重要的特征。所谓泛型:就是变量类型的参数化...
  • lamstudyingnet
  • lamstudyingnet
  • 2013年08月01日 13:22
  • 206
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员_java基础加强6_多线程加强
举报原因:
原因补充:

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