java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java线程的创建

Java多线程之线程的创建

作者:奥卡姆的剃刀生锈了

这篇文章主要介绍了Java多线程之线程的创建,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下

一、三种创建方式

基于什么创建 创建的方式
Thread类 继承Thread
Runnable接口 实现Runnable接口
callable接口 实现callable接口

二、通过Thread类创建

2.1 步骤

2.2 案例

//主方法
public class Demo01 {
    public static void main(String[] args) {
        Thread1 thread1 = new Thread1();
        Thread2 thread2 = new Thread2();

        thread1.start();
        thread2.start();
    }
}

//100以内的偶数
class Thread1 extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            if (i%2==0){
                System.out.println(Thread.currentThread().getName() + ":" + i);
            }
        }
    }
}

//100以内的奇数
class Thread2 extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            if (i%2!=0){
                System.out.println(Thread.currentThread().getName() + ":" + i);
            }
        }
    }
}
public class Demo02 {
    public static void main(String[] args) {
        //打印0~100内的偶数
        new Thread(){
            @Override
            public void run() {
                for (int i = 0; i < 100; i++) {
                    if (i%2==0){
                        System.out.println(Thread.currentThread().getName() + ":" + i);
                    }
                }
            }
        }.start();
        //打印0~100内的奇数
        new Thread(){
            @Override
            public void run() {
                for (int i = 0; i < 100; i++) {
                    if (i%2!=0){
                        System.out.println(Thread.currentThread().getName() + ":" + i);
                    }
                }
            }
        }.start();
    }
}
public class Test {
    public static void main(String[] args) {
        Window w1 = new Window("窗口 1 ");
        Window w2 = new Window("窗口 2 ");
        Window w3 = new Window("窗口 3 ");

        w1.start();
        w2.start();
        w3.start();
    }
}

class Window extends Thread{
    //这里票的数量应该是静态变量,否则每个对象创建后都有100张票,而不是总共100张票
    private static int tickets = 100;

    public Window(String name) {
        super(name);
    }

    @Override
    public void run() {
        while (tickets > 0){
            tickets--;
            System.out.println(getName() + "卖出了一张票,剩余票数:" + tickets);
        }
    }
}

在这里插入图片描述 

2.3 注意的问题

三、Thread类中常用的方法

3.1 案例

在这里插入图片描述 

四、通过实现Runnable接口来创建线程

4.1 创建步骤

在这里插入图片描述 

五、继承Thread类和实现Runnable接口两种方式比较

开发中,优先选择实现Runnable接口的方式创建线程

原因:

联系:Thread类本身也实现了Runnable接口

在这里插入图片描述

相同点:两种方式都需要重写run()方法,将线程要执行的逻辑声明在run()方法中

六、线程的优先级设置

调度策略

线程的优先级分为1~10十个档,其中:

注意:高优先级的线程要抢占低优先级线程CPU的执行权。但是只是从概率上来讲,高优先级的线程高概率的情况下被执行。并不意味着只有当高优先级的线程被执行完以后,低优先级的线程才会被执行。

七、总结

线程开启后不一定立即执行,有CPU进行调度(如果只有一个CPU,主线程和创建的线程会交替执行)

到此这篇关于Java多线程之线程的创建的文章就介绍到这了,更多相关Java线程的创建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文