快速业务通道

浅析Java的线程机制 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

浅析Java的线程机制

时间:2010-12-08

一 线程的基本概念:

线程是一个程序内部的顺序控制流,一个进程相当于一个任务,一个线程相当于一个任务中的一条执行路径。多进程:在操作系统中能同时运行多个任务(程序);多线程:在同一个应用程序中有多个顺序流同时执行;Java线程是通过java.lang.Thread类来实现的;VM启动时会有一个由主方法(public static void main(){})所定义的线程;以通过创建Thread的实例来创建新的线程每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体通过调用Thread类的start()方法来启动一个线程

二 Java线程的创建和启动:

可以有两种方式创建新的线程:

第一种:

1.定义线程类实现Runnable接口

2.Thread myThread = new Thread(target); //target为Runnable接口类型

3.Runnable中只有一个方法:public void run();用以定义线程运行体

4.使用Runnable接口可以为多个线程提供共享的数据

5.在实现Runnable接口的类的run()方法定义中可以使用Thread的静态方法public static Thread currentThread();获取当前线程的引用

第二种:

1.可以定义一个Thread的子类并重写其run方法如:

class MyThread extends Thread {    public void run() {...} }

2.然后生成该类的对象:

MyThread myThread = new MyThread();

三 Java线程控制的基本方法:

isAlive():判断线程是否还"活"着

getPriority():获得线程的优先级数值

setPriority():设置线程的优先级数值

Thread.sleep():将当前线程睡眠指定毫秒数

join():调用某线程的该方法,将当前线程与该线程"合并",即等待该线程结束,再恢复当前线程的运行

yield():让出cpu,当前线程进入就绪队列等待调度

wait():当前线程进入对象的

wait pool notify()/notifyAll():唤醒对象的wait pool中的一个/所有等待线程

?3??Javaμ???3ì?ú??(2)

ê±??:2010-12-08

?? ??3ìí?2?£o

êμ??éú2ú????·????êìaà′?μ?÷??3ì?êìa£??ùàyè????ùê?£o

/** * éú2ú????·????êìa */ package com.basic.thread; /** * @author johnston678 * * @version 2009-05-06 */ public class ProducerConsumer { ???????? /** ?????????? * @param args ?????????? */ ???????? public static void main(String[] args) { ???????????????? ProductBox pb = new ProductBox(); ???????????????? Producer p = new Producer(pb); ???????????????? Consumer c = new Consumer(pb); ???????????????? Thread pThread = new Thread(p); ???????????????? Thread cThread = new Thread(c); ???????????????? pThread.setPriority(Thread.MAX_PRIORITY); ???????????????? pThread.start(); ???????????????? cThread.start(); ???????? } } /** * 2ú?·???ó * @author johsnton678 */ class Product { ???????? int id; ???????? public Product(int id) { ???????????????? super(); ???????????????? this.id = id; ???????? } ???????? public String toString(){ ???????????????? return "Product£o" + id; ???????? } } /** * 2ú?·oD???ó * @author johnston678 */ class ProductBox { ???????? Product[] productbox = new Product[6]; ???????? int index = 0; ???????? public ProductBox() { ???????????????? super(); ???????? } ???????? public synchronized void push(Product p) { ???????????????? while (index == productbox.length) { ???????????????????????? try { ???????

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号