知识大全 Java多线程的相关机制
Posted 知
篇首语:没有完美的个人,只有完美的团队!本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java多线程的相关机制相关的知识,希望对你有一定的参考价值。
Java多线程的相关机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
一 线程的基本概念
线程是一个程序内部的顺序控制流 一个进程相当于一个任务 一个线程相当于一个任务中的一条执行路径 多进程:在操作系统中能同时运行多个任务(程序) 多线程:在同一个应用程序中有多个顺序流同时执行 Java的线程是通过java lang Thread类来实现的 JVM启动时会有一个由主方法(public static void main())所定义的线程 可以通过创建Thread的实例来创建新的线程 每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的 方法run()称为线程体 通过调用Thread类的start()方法来启动一个线程
二 线程的创建和启动
可以有两种方式创建新的线程:
第一种:
定义线程类实现Runnable接口
Thread myThread = new Thread(target); //target为Runnable接口类型
Runnable中只有一个方法:public void run();用以定义线程运行体
使用Runnable接口可以为多个线程提供共享的数据
在实现Runnable接口的类的run()方法定义中可以使用Thread的静态方法public static Thread currentThread();获取当前线程的引用
第二种:
可以定义一个Thread的子类并重写其run方法如:
class MyThread extends Thread
public void run()
然后生成该类的对象:
MyThread myThread = new MyThread();
三 线程控制的基本方法
isAlive():判断线程是否还 活 著
getPriority():获得线程的优先级数值
setPriority():设置线程的优先级数值
Thread sleep():将当前线程睡眠指定毫秒数
join():调用某线程的该方法 将当前线程与该线程 合并 即等待该线程结束 再恢复当前线程的运行
yield():让出cpu 当前线程进入就绪队列等待调度
wait():当前线程进入对象的wait pool
notify()/notifyAll():唤醒对象的wait pool中的一个/所有等待线程
四 线程同步
实现生产者消费者问题来说明线程问题 举例如下所示:
/**
* 生产者消费者问题
*/
package basic thread;
/**
* @author johnston
*
* @version
*/
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();
/**
* 产品对象
* @author johsnton
*/
class Product
int id;
public Product(int id)
super();
this id = id;
public String toString()
return Product: + id;
/**
* 产品盒对象
* @author johnston
*/
class ProductBox
Product[] productbox = new Product[ ];
int index = ;
public ProductBox()
super();
public synchronized void push(Product p)
while (index == productbox length)
try
this wait();
catch (InterruptedException e)
// TODO Auto generated catch block
e printStackTrace();
this notify();
productbox[index] = p;
index ++;
public synchronized Product pop()
while (index == )
try
this wait();
catch (InterruptedException e)
// TODO Auto generated catch block
e printStackTrace();
this notify();
index ;
return productbox[index];
/**
* 生产者
* @author johnston
*/
class Producer implements Runnable
ProductBox productbox = null;
public Producer(ProductBox productbox)
super();
this productbox = productbox;
@Override
public void run()
// TODO Auto generated method stub
for (int i= ; i< ; i++)
Product p = new Product(i);
productbox push(p);
System out println( produce: + p);
try
Thread sleep((int)(Math random() * ));
catch (InterruptedException e)
e printStackTrace();
/**
* 消费者
* @author johnston
*/
class Consumer implements Runnable
ProductBox productbox = null;
public Consumer(ProductBox productbox)
super();
this productbox = productbox;
@Override
public void run()
// TODO Auto generated method stub
for (int i= ; i< ; i++)
Product p = productbox pop();
System out println( consume: + p);
try
Thread sleep((int)(Math random() * ));
catch (InterruptedException e)
e printStackTrace();
cha138/Article/program/Java/gj/201311/27546
相关参考
解析Java的多线程机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一进程与应用程序的区别
JAVA多线程中的锁机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! JAVA中的每个对象都可
Java多线程的同步示例及对象锁机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! java
Java多线程操作相关问题总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Java线程通信的机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
浅析Java多线程程序设计机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 多线程是Java语
Java的多线程-实现多线程及线程的同步 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一.实现
Java多线程编程基础之线程和多线程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 随着计算机技
Java多线程如何创建多个线程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java多线程的同
超线程多核心下Java多线程编程分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一Java环