您的位置:首页 > 编程语言 > Java开发

Java多线程

2013-10-13 22:10 267 查看
1.线程和进程

进程:处于运行中的程序,具有一定独立功能,进程是系统进行资源分配和调度的一个独立单位,具有

独立性,动态性,并发性。

线程:是"进程"中某个单一顺序的控制流。

关系:进程拥有一个或多个线程,一个线程必须有一个父进程,他与父进程的其他线程共享该进程的所

有资源。

2.线程的创建和启动

(1)继承Thread类

public class MyThread extends Thread {
private int i;
public void run()
{
for(;i<100;i++)
System.out.println(getName()+" "+i);
}
public static void main(String[] args)
{
for(int i=0;i<100;i++)
{ System.out.println(Thread.currentThread().getName()+" "+i);
if(i==20)
{ new MyThread().start();
new MyThread().start();
}
}
}
}


(2)实现Runnable接口创建线程类

public class MyThread2 implements Runnable{
private int i;
public void run()
{
for(;i<100;i++)
System.out.println(Thread.currentThread().getName()+" "+i);
}
public static void main(String[] args) {
for(int i=0;i<100;i++)
{
System.out.println(Thread.currentThread().getName()+" "+i);
if(i==20)
{
MyThread2 st=new MyThread2();
new Thread(st,"新线程1").start();
new Thread(st,"新线程2").start();
}
}
}
}


3.线程生命周期

新建(new)---就绪(start())---运行(run())---阻塞(sleep())---死亡(stop())

4.线程的控制

(1)jion()方法:由使用线程的程序调用;

如:线程1中:线程2.jion();-----则先等2执行完再继续执行线程1.

(2)sleep(int s)方法:让正在执行的线程暂停s毫秒---该进程进入阻塞态;

(3)yield()让步方法:让正在执行的线程进入就绪态;

(4)改变线程的优先级:setPriority(int newPriority) 参数取值为1-10之间的整数。

(5)后台线程:setDaemon(true),后台线程会在所有前台进程死亡后自动死亡,JVM的垃圾回收线程就是

后台线程。

5.线程的同步,通信,锁等是操作系统方面的知识。

6.线程池

系统启动一个新线程的成本是比较高的,涉及与操作系统的交互,在需要大量创建线程的情况下使用线程池提

高性能。

线程池在系统启动时创建大量的空闲线程,程序将一个Runnable对象传给线程池,线程池就启动一条线程执

行该对象的run方法,run结束后,该线程不会死亡,而是返回线程池成为空线程,继续等待。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: