关于java中线程的一些总结
关于java中线程的一些总结
线程,在讲到线程的时候,我们必须先知道进程,那什么是进程呢?一般来说,我们把正在计算机中运行的程序就称之为进程。例如:QQ等。所谓线程就是在进程内部, 并发运程的过程(方法)。进程是并发运行的, OS将时间划分为很多时间片段, 尽可能均匀分配给正在运行的程序, 微观上看进程是走走停停的, 宏观上都在运行这种都运行的现象叫: 并发, 但是不是绝对意义上的”同时”。线程在学习过程中是一个难点问题。
知道了一些基本概念后,我们来看看在java中怎样去创建线程。创建线程主要有两种方式:一是继承Thread类,二是实现Runnable接口。我们用第一种方式来实现创建一个线程,例如:
上面用Person1这个类去继承Thread这个类,然后去覆盖run()方法。然后在主方法中创建一个线程的实例p1,然后开启线程。
第二种方式实现创建一个线程,例如:
上面就是利用实现Runnable接口来现实了创建一个线程的方法。我们主要是实现了run()方法。然后,在main()方法中测试。通过创建一个Person2的实例,利用实例去调用run()方法。
知道如何创建线程后,我们接下来探讨一下线程的工作原理。首先我们需要了解线程的几个基本状态。
1、 new 新建
2、 Runnable 可以运行(就绪)
3、 Running 运行(正在运行)
4、 Block 阻塞 挂起
5、 Dead 死亡
各状态之间的转换入下图所示:
线程各状态的管理:
1)让出CPU
Thread.yield() 当前线程让出处理器(离开Running),
使当前线程进入Runnable等待
2)休眠
Thread.sleep(times) 使当前线程从 Running 放弃处理器
进入Block状态, 休眠times毫秒, 再返回到Runnable
如果其他线程打断当前线程的Block(sleep), 就会发生
InterruptedException.
几种常见的创建线程的方法:使用内部类和匿名内部类来创建线程。
例:
在线程中还有一些关于锁的问题 ,我们在用的时候一定要小心,不然程序容易出现问题。
上面是对线程的一些总结,大家在用线程的时候一定要慎重选择,如果用不好,会出现很多问题的。
有不足之处请指教。谢谢!