2017-2-18
进程和线程
一,进程线程基本概念
进程:一个正在执行的应用程序。
线程:程序中的一个代码流。
关系:一个线程只能属于一个进程,但是一个进程可以有多个线程,但是只有一个主线程。
多线程:可以同时并发执行多个任务。最大限度的降低cpu的闲置时间。不利:线程越多,占用内存越多;需要cpu时间跟踪管理;必须解决资源共享的问题;线程太多会导致程序很难控制,可能出现喝多bug;
二,创建线程的两种方法
①继承Thread类
public class MyThread extends Tread{
public void run(){}
}
调用:MyThread thread=new MyThread ();
thread.start();
②实现Runable
public class MyThread implements Runnable{
public void run(){}
}
调用:MyThread mt=new MyThread ();
Tread t=new Tread(mt);
t.start();}
三,Tread类常用方法
①常用构造方法:
Tread()创建一个新的线程;
Tread(String name)创建一个制定名称的线程;
Tread(Runnable target)利用Runnable对象创建一个新的线程,启东市调用该对象的run方法;
Tread(Runnable target,String name)利用Runnable对象创建一个新的线程,并指定线程的名称。
void start();启动线程;
final void setPriority(Int newPriority)设置线程的优先级;
final void getPriority()返回线程的优先级;
final void join();等待线程终止;
②常用
static Tread CurrentTread();返回对当前线程的兑现的引用;
static void sleep(long millis);让当前执行的线程休眠,休眠时间由millis(毫秒)决定;
static void yield();暂停当前正在执行的线程,转而执行其他的线程;
③与后台线程相关的方法
final setDaemon(boolean on)将该线程设置为后台线程;
final boolean isDaemon();判断该线程是否为后台线程;
四,线程同步
①实现同步需要两步操作:把竞争访问的资源标识为private;使用synchronized同步方法或者代码块;
五,线程通讯
①wait();notify();notifyAll();
②sleep()和wait()区别:sleep()是Tread的静态方法,wait()是、object类的方法;sleep()让本线程进入休眠状态。wait()让线程进入等待;sleep()不会释放同步锁;wait()释放同步锁;
③解决死锁:让线程持有独有的资源;尽量不要使用嵌套synchronized’
六,线程状态转换