java知识总结(工作一年半差不多两年了,感觉是时候总结一下java,文章内容为本人观点)

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’

六,线程状态转换




你可能感兴趣的:(java)