java线程---初步

[size=medium]线程是什么?
线程指的是两件不同的事情:
1,java.lang.Thread的一个实例
2,线程的执行一个Thread实例只是一个对象。像Java中的任何其他对象一样,具有变量和方法,生死在堆上。但是线程的执行时一个单独的进程,有自己的调用栈。每个线程都有自身的调用栈。

不同的JVM可能以不同的方式来运行线程,例如可能在一个jvm上,各个线程分时运行,而有的JVM必须要保证一个线程执行完毕,才能进行切换。

初始化线程实例:
Thread t = new Thread();
或Runnable r = new MyRunnable();
Thread t = new Thread(r);

注意Thread本身实现了Runable接口,所以可以将thread作为Thread t = new Thread();的参数。注意线程执行的次序是没有保障的,并不一定先调用start的thread,就一定先run。当线程执行完其run方法后,不再是一个执行过程,该线程的栈解散。

如果线程已经启动,就不能再次调用start方法启动,会导致异常IllegalThreadStateException。
我们可以使用一些方法来影响线程的调度顺序,记住,是影响,不是控制,只有JVM才能真正控制线程调度。
来自Thread类的方法:
public static void sleep(long sleeptime) throws InterruptedException
public static void yield()
public final void join()throws InterruptedException
public final void setPriority(int newPriority)
位于Object类中的方法有:
public final void notify()
public final void notifyAll()
public final void wait()throws InterruptedException[/size]
package threadExamples;

class Printer implements Runnable {

private String message;

public Printer(String s) {
this.message = s;
}

@Override
public void run() {

for (int i = 0; i < 1000; i++) {
System.out.println(message);
}
}

}

class MyThread extends Thread {
public void run() {
for (int i = 0; i < 500; i++) {
System.out.println("Nice");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
} // 新线程要等待,必须在run方法中sleep
}
System.out.println("End of mythread");
}
}

public class Main {

public static void main(String[] args) throws InterruptedException {//主线程
MyThread t = new MyThread();
t.start(); //启动线程,会和主线程交替执行

for (int i = 0; i < 1000; i++) {
System.out.println("Good");
}



Printer p = new Printer("*");
Printer p1 = new Printer("+");

p.run();
p1.run(); // 注意: 单线程,只是由main调用run方法,并没有启动线程
// 输出时先是*,后是+,不会出现二者交替输出的情况

System.out.println("End of main");
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值