浅谈Java线程学习
话说,线程是为了java程序能够获得更高的执行效率,而引入的一个概念。所谓的线程,就是一个可以独立、并发执行的程序单元。而,多线程是指,程序中同时存在多个执行体,各线程按照自己的执行路线并发的工作,独立完成各自的功能,互不干扰。就好像,我们能够在计算机上,同时听音乐和上网浏览信息一样。这种执行效果是不是很好。
线程的生命周期,就像我们学习android中的activity类也有自己的生命周期,以及操作系统中的一些执行程序也有自己的生命周期类似。每个线程要经历:新生状态、就绪状态、运行状态、阻塞状态、死亡状态,这样一个从新生到死亡的过程称为一个生命周期。
下面再来说说多线程的实现方法,为什么要直接讲多线程呢?因为一个线程的话,就可以直接执行了,其执行过程就是按照他的一个生命周期来运行的。所以搞明白的是多线程的运行机制,况且在实际应用中,很少(或是几乎没有)有单线程执行任务的,就像linux系统在用户不工作的情况下,他的后台都有近一百左右的程序在运行。所以搞清楚多线程的运行机制很重。
直接看程序:
1、线程的子类继承:
[java]
package moreThread;
public class ThreadZiLei extends Thread{
String s ;
int m, count = 0 ;
public ThreadZiLei(String s, int m) {
super();
this.s = s;
this.m = m;
}
public void run() {
try
{
while(true)
{
System.out.print(s);
sleep(m);
count++;
if(count>=20) {
break;
}
}
System.out.print(s+"finished!");
}
catch(InterruptedException e) {
return;
}
}
public static void main (String args[]) {
ThreadZiLei threadZiLeiA = new ThreadZiLei("A ",50);
ThreadZiLei threadZiLeiB = new ThreadZiLei("B ",100);
threadZiLeiA.start();
threadZiLeiB.start();
System.out.print("main is finished !"); //说明thread A、B和main函数是并发的线程。
}
}
package moreThread;
public class ThreadZiLei extends Thread{
String s ;
int m, count = 0 ;
public ThreadZiLei(String s, int m) {
super();
this.s = s;
this.m = m;
}
public void run() {
try
{
while(true)
{
System.out.print(s);
sleep(m);
count++;
if(count>=20) {
break;
}
}
System.out.print(s+"finished!");
}
catch(InterruptedException e) {
return;
}
}
public static void main (String args[]) {
ThreadZiLei threadZiLeiA = new ThreadZiLei("A ",50);
ThreadZiLei threadZiLeiB = new ThreadZiLei("B ",100);
threadZiLeiA.start();
threadZiLeiB.start();
System.out.print("main is finished !"); //说明thread A、B和main函数是并发的线程。
}
}
结果:
[java]
A main is finished !B A A B A A B A A B A A B A A B A A B A A B A A B A A B A A finished!B B B B B B B B B B B finished!
A main is finished !B A A B A A B A A B A A B A A B A A B A A B A A B A A B A A finished!B B B B B B B B B B B finished!
2、通过runnable接口实现多线程
[java]
package moreThread;
public class RunnableInterfece implements Runnable{
String s ;
int m, count = 0 ;
public RunnableInterfece(String s, int m) {
super();
this.s = s;
this.m = m;
}
public void run() {
try
{
while(true)
{
System.out.print(s);
Thread.sleep(m); //这是在接口调用,注意与thread子类调用的方法有什么不同之处
count++;
if(count>=20) {
break;
}
}
System.out.print(s+"has finished!");
}
catch(InterruptedException e) {
return;
}
}
package moreThread;
public class RunnableInterfece implements Runnable{
String s ;
int m, count = 0 ;
public RunnableInterfece(String s, int m) {
super();
this
补充:软件开发 , Java ,