线程Thread

进程是正在运行的程序;

线程是进程中单个顺序控制流,是一条执行路径。

如果一个进程有多跳执行路径,则是多线程;如果只有一条则是单线程。

要实现多线程,可使一个类继承自Thread类,并重写run方法。(start()会开一个新栈)

Java中线程是抢占式的,也就是线程争夺cpu的执行权,cpu才是老大!

步骤包括:

1.先创建一个新类m,使之继承Thread;

2.重写run方法;

3。new 一个m类的对象t;

4.启动线程:t.start();

下面为一简单示例:

public class Main {
    public static void main(String[] args) {
        T t=new T();
        t.start();
     for(int i=0;i<20;i++)
     {
         System.out.println("Main--->"+i);
     }

    }
}
public class T extends Thread{
    public void run(){
        for(int i=0;i<20;i++)
        {
            System.out.println("T--->"+i);
        }

    }
}

运行结果:

Main--->0
T--->0
Main--->1
T--->1
Main--->2
T--->2
Main--->3
T--->3
Main--->4
T--->4
Main--->5
T--->5
Main--->6
Main--->7
Main--->8
T--->6
T--->7
T--->8
T--->9
T--->10
T--->11
T--->12
T--->13
T--->14
T--->15
Main--->9
T--->16
T--->17
T--->18
T--->19
Main--->10
Main--->11
Main--->12
Main--->13
Main--->14
Main--->15
Main--->16
Main--->17
Main--->18
Main--->19

线程中有许多控制方法:

比如join()和sleep();由帮助文档知:

final void

join()

Waits for this thread to terminate.

static void

sleep(long millis)

Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds, subject to the precision and accuracy of system timers and schedulers.

sleep方法是当前线程停留millis毫秒;join是等待这个线程死亡,阻止其他线程执行,必须等他先执行完。

sleep:

class T extends Thread{
    public void run(){
        for(int i=0;i<10;i++)
        {
            System.out.println(Thread.currentThread()+"T--->"+i);
        }

    }
}

public class Main {
    public static void main(String[] args) throws InterruptedException {
        T t=new T();
        T t1=new T();
        t.start();
        t1.start();
     for(int i=0;i<10;i++){
         System.out.println(Thread.currentThread()+"Main--->"+i);
     }
        T.sleep(100);
    }
}
Thread[main,5,main]Main--->0
Thread[main,5,main]Main--->1
Thread[main,5,main]Main--->2
Thread[main,5,main]Main--->3
Thread[main,5,main]Main--->4
Thread[main,5,main]Main--->5
Thread[main,5,main]Main--->6
Thread[main,5,main]Main--->7
Thread[Thread-0,5,main]T--->0
Thread[main,5,main]Main--->8
Thread[Thread-1,5,main]T--->0
Thread[main,5,main]Main--->9
Thread[Thread-0,5,main]T--->1
Thread[Thread-1,5,main]T--->1
Thread[Thread-0,5,main]T--->2
Thread[Thread-1,5,main]T--->2
Thread[Thread-0,5,main]T--->3
Thread[Thread-1,5,main]T--->3
Thread[Thread-0,5,main]T--->4
Thread[Thread-1,5,main]T--->4
Thread[Thread-0,5,main]T--->5
Thread[Thread-1,5,main]T--->5
Thread[Thread-0,5,main]T--->6
Thread[Thread-1,5,main]T--->6
Thread[Thread-1,5,main]T--->7
Thread[Thread-1,5,main]T--->8
Thread[Thread-1,5,main]T--->9
Thread[Thread-0,5,main]T--->7
Thread[Thread-0,5,main]T--->8
Thread[Thread-0,5,main]T--->9

Process finished with exit code 0

join:

// Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`,
// then press Enter. You can now see whitespace characters in your code.
public class Main {
    public static void main(String[] args) throws InterruptedException {
        T t=new T();
        T t1=new T();
        t.start();
        t1.start();
     for(int i=0;i<10;i++){
         System.out.println(Thread.currentThread()+"Main--->"+i);
     }
     t.join();
    }
}
class T extends Thread{
    public void run(){
        for(int i=0;i<10;i++)
        {
            System.out.println(Thread.currentThread()+"T--->"+i);
        }

    }
}

2

Thread[main,5,main]Main--->0
Thread[Thread-0,5,main]T--->0
Thread[main,5,main]Main--->1
Thread[Thread-1,5,main]T--->0
Thread[Thread-1,5,main]T--->1
Thread[Thread-1,5,main]T--->2
Thread[Thread-1,5,main]T--->3
Thread[Thread-0,5,main]T--->1
Thread[Thread-0,5,main]T--->2
Thread[Thread-0,5,main]T--->3
Thread[Thread-0,5,main]T--->4
Thread[Thread-0,5,main]T--->5
Thread[Thread-0,5,main]T--->6
Thread[Thread-0,5,main]T--->7
Thread[Thread-0,5,main]T--->8
Thread[Thread-0,5,main]T--->9
Thread[Thread-1,5,main]T--->4
Thread[Thread-1,5,main]T--->5
Thread[Thread-1,5,main]T--->6
Thread[Thread-1,5,main]T--->7
Thread[Thread-1,5,main]T--->8
Thread[Thread-1,5,main]T--->9
Thread[main,5,main]Main--->2
Thread[main,5,main]Main--->3
Thread[main,5,main]Main--->4
Thread[main,5,main]Main--->5
Thread[main,5,main]Main--->6
Thread[main,5,main]Main--->7
Thread[main,5,main]Main--->8
Thread[main,5,main]Main--->9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值