java线程 java线程原理
java线程
1.首先执行 main中的 newThread()实例化
2.执行newThread()的构造函数
3.构造函数t.start()启动了线程
4.回来main的try,输出main Thread和数字
5.main等待1秒,执行线程run()
6.输出child Thread和数字
7.child等待0.5秒,继续执行child Thread..
8.child等待0.5秒。这时main和child刚好同时苏醒,就看谁争抢到cpu了。
9.过程就这样
java线程原理
首先你这两个线程都是永不停止的
在电脑操作系统内部,有个东西叫readyList。当t2.start() t3.start() 执行后,这两个线程以及main线程(3个线程)都被放入了readyList。
之后你可以这么理解,假设这三个线程的priority(优先级别)是一样的,每个线程只准执行万分之一秒,然后readyList的scheduler就来管了:线程1,你的时间到了,给我滚回readyList里去。下个线程准备
有关java更多线程,可以在oracle网站上找哦,我在这里学到了很多东西。
参考资料:http://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html
辅以图示简述Java线程的生命周期
//这是线程被中断,同生命周期的代码,希望帮到你啦!
class MyThread implements Runnable {
@Override
public void run() {
System.out.println("1、进入run()方法休眠")
try {
System.out.println("2、线程休眠20秒")
Thread.sleep(20000)//这里休眠20秒
System.out.println("3、线程正常休眠完毕")
} catch (InterruptedException e) {
System.out.println("4、线程发生异常休眠被中断")
return//返回方法调用处
}
System.out.println("5、线程正常结束run()方法体")
}
}
public class InterruptDemo {
public static void main(String[] args) {
MyThread mt = new MyThread()
Thread t = new Thread(mt,"线程A")
t.start()//启动线程
//========================================================
try {
Thread.sleep(2000) //保证线程至少执行2秒
} catch (InterruptedException e) {
e.printStackTrace()
}
//========================================================
t.interrupt()//中断线程
}
}
如何在Java中实现线程?
java中多线程的实现方式有两种,一种是继承java.lang.Thread类,另一种是实现java.lang.Runnable接口。下面是两种方式的简单代码。继承Thread类方式:import java.lang.Thread //用集成Thread类方式实现多线程。 public class Test{ public static void main(String arg[]){ T t1=new T() T t2=new T() //更改新线程名称 t1.setName("t1") t2.setName("t2") //启动线程 t1.start() t2.start() } } class T extends Thread{ //重写run()方法 public void run(){ System.out.println(this.getName()) } }输出结果为:t1t2实现Runnable接口方式:在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。import java.lang.* //用实现Runnable接口的方式实现多线程。 public class Test{ public static void main(String arg[]){ T t1=new T() T t2=new T() //一定要实例化Thread对象,将实现Runnable接口的对象作为参数传入。 Thread th1=new Thread(t1,"t1") Thread th2=new Thread(t2,"t2") //启动线程 th1.start() th2.start() } } class T implements Runnable{ //重写run()方法 public void run(){ System.out.println(Thread.currentThread().getName()) } }输出结果为:t1t2public void run()方法是JAVA中线程的执行体方法,所有线程的操作都是从run方法开始,有点类似于main()方法,即主线程。