java多线程--大作业相关

大作业是选课系统需要多线程。疯狂学习中。为了避免遗忘以blog记录一下~

java中使用Thread类来表示线程,所以所有的线程对象都是Thread或者是他的子类。

方法一、定义Thread类的子类,在里面重写run方法,run里面的是线程真正要执行的任务。

但是需要注意,在启动线程的时候要使用start而不是run。

主线程(也就是main)本身也是一个线程。程序在执行过程中至少会有一个主线程

Thread类本身有静态方法和实例方法,静态方法currentThread直接Thread.currentThread()就可以,getName()这种实例方法使用具体对象调用。也可以使用setName修改名称。(eg:this.setName(String name))

public class FirstThread extends Thread
{
    private int i;
    public void run()
    {
        for(;i<100;i++)
        {
            System.out.println(this.getName()+""+i);
        }
    }
    public static void main(String args[])
    {
        for(int i=0;i<100;i++)
        {
            System.out.println(Thread.currentThread().getName()+""+i);
            if(i==20)
            {
                new FirstThread().start();
                new FirstThread().start();
            }
        }
    }
}
FirstThread

这里面的i在三个线程里面是独立的,因此结果输出的i是乱序的。

另外,虽然从i=20开始启动两个新的线程,但是顺序仍然是不确定的,(在本次执行中,main70多才出现Thread0)

thread0和thread1顺序也是不稳定的

thread010是thread0的,thread10是在thread1里面的0号。(两者不是一一交替进行的,具有一定的随机性,这也是在真正的多线程中需要锁和信号量的主要原因。)

猜你喜欢

转载自www.cnblogs.com/tingxilin/p/11184333.html
今日推荐