Java 多线程(Thread)学习

多线程:就是进程的扩展,实现并发。一个进程可以包含多个线程,进程一般是由操作系统控制,而线程就是由程序员控制的,所以作为编程人员做好线程是我们的重点。

线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。

进程是操作系统同时执行多个任务,其实也不是同时执行,就是把多个任务分成就绪、运行-->就绪、运行切换,CPU执行速度太快,所以感觉是同时执行。

多线程是指在同一程序中有多个顺序流在执行,从而实现并发性。

创建线程有两种方法:继承Thread;实现Runnable接口;通过匿名内部类实现Runnable接口

1.继承Thread,然后重写run()方法,再然后就是启动线程.start().

Class Thread1 extends Thread{

@Override
public void run() {}

}

2.实现Runnable接口,然后重写run()方法,再然后就是启动线程.start().

Class Thread2 implements Runnable{
@Override
public void run() {}
}

Thread2 th=new Thread2();
Thread th1=new Thread(th);//创建线程对象
th1.start();//启动线程

3.通过匿名内部类实现Runnable接口,然后在匿名内部类中重写run()方法,再然后就是启动线程.start().

Thread th=new Thread(new Runnable(){

@Override
public void run() {}

});

线程休眠

Thread.sleep(500);//500表示500毫秒
Thread.currentThread().getName()//获得线程默认的名字
Thread.currentThread().SetName("th1")//设置线程名

Thread和Runnable的区别

1.如果一个类继承Thread,则不适合资源共享。但是如果实现了Runnable接口的话,则很容易的实现资源共享。

继承Thread 创建的对象是单独的线程,而实现Runnable其实是同一个线程。

2.实现Runnable接口比继承Thread类的优势:

1):适合多个相同的程序代码的线程去处理同一个资源

2):可以避免java中的单继承的限制

3):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立

为了不让同一个对象不被多个线程同时访问,引入锁的概念(Synchronized),加锁之后当这个对象被线程1访问就会上锁,之后的线程想访问只能等线程1访问结束。引入锁保证了安全性。

 

posted @ 2017-09-15 22:47  蓬鹏  阅读(170)  评论(0编辑  收藏  举报