黑马程序员-JAVA多线程开发


---------------------- android培训java培训、期待与您交流! ----------------------
线程是轻量级的进程

每个程序都至少会有一个进程
进程是一个正在执行中的程序
每一个进程执行都有一个执行顺序。该顺序是一个执行路经,或者叫做控制单位
线程:就是进程中的一个
死锁就是两个进程过河,谁也不让谁就一直僵在那里独立的控制单元。线程在控制着进程的执行
一个线程至少有一个线程
JAVA VM 启动时候会有一个进程java.exe
该进程中至少有一个线程负责JAVA程序的执行。
而且这个线程运行的代码存在于main方法中
该线程称之为主线程。
扩展:其实更细节说明,JVM,JVM启动的不止一个线程,还有负责垃圾回收机制的线程
实现有两个方法一个是继承Thread然后重写run方法
static Thread currentThread():获取当前线程对象的。
GetName():获取线程名称
步骤:
1,定义一个继承Thread的类
2。重写run方法
Run用于存放需要执行的代码
3.调用start方法
start是启动线程,然后调用Run方法来运行这个进程
CPU并不是真的是实现多个程序共同运行,而是CPU处理的数据非常快再加上快速的切换,使之看起来就好像是多个线程在同时运行
Thread类用于描述线程。
该类就定义一个功能,用于存储线程要运行的代码,该存储方法就是Run方法
Run方法用于存放线程要运行的代码
  1 class Demo extends Thread
  2 {
  3         public void run()
  4         {
  5                 for(int x=0;x<600;x++)
  6                 System.out.println("demo run"+x);
  7         }
  8 }
  9 class ThreadDemo
 10 {
 11         public static void main(String[] args)
 12         {
 13                 Demo d=new Demo();
 14                 d.start(); 
 15                 for(int i=0;i<600;i++)
 16                 System.out.println("hello world!"+i);
 17         }       
 18 }       
//下面的程序是创建两个进程执行,看同步时的效果
  1
                  1 class Demo extends Thread
  2 {
  3         public void run()
  4         {
  5                 for(int x=0;x<600;x++)
  6                 System.out.println("demo run"+x);
  7         }
  8 }
  9 class ThreadDemo
 10 {
 11         public static void main(String[] args)
 12         {
 13                 Demo d=new Demo();
 14                 d.start(); 
 15                 for(int i=0;i<600;i++)
 16                 System.out.println("hello world!"+i);
 17         }       
 18 }       

1、一个线程通常需要经历四个状态。
1。新建
当你声明一个对象并且创建时就处于新建状态
2。运行
线程具有了运行的条件,并且当时刻轮到你这里时并享用CPU的资源
3。中断
因为某些条件会致使程序中断,跳到这个状态
4。死亡
当线程不具有继承运行的能力。

创建线程的第二种方式:实现Runable接口
步骤 
1,定义类实现Runnable接口中的run方法。
2.覆盖Runnable接口中的run方法。
3.通过Thread类建立线程对象
4.将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。
5。调用THread类的start()方法开启线程并调用Runnable接口了类的run方法
实例代码如下:
class Ticket implements Runnable 
{
private static int tick=100; 
public void run()

{
while(true){
if(tick>0)
{
System.out.println(Thread.currentThread().getName()+"sale: "+tick--);
}
else{
break;
}
}
}
}
class TicketDemo
{
public static void main(String[] args)
{
//下面是创建四个进程并且启动它
Ticket t=new Ticket(t);
Thread t1=new Thread(t);
Thread t2=new Thread(t);
Thread t3=new Thread(t);
Thread t4=new Thread();
t1.start();
t2.start();
t3.start();
t4.start();

}
}
synchronized(对象)
{
需要同步的代码


}
函数锁是用this代表
静态的同步方法,使用的锁是所在类转换后的字节码表示,类名.class
---------------------- android培训java培训、期待与您交流! ---------------------- 详细请查看:http://edu.csdn.net/heima
原文地址:https://www.cnblogs.com/tianyake/p/2357516.html