Java多线程的概念特性线程的创建方式以及线程的常用方法

Posted JIANGJIZE1999

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java多线程的概念特性线程的创建方式以及线程的常用方法相关的知识,希望对你有一定的参考价值。

1.线程的概念

线程和进程的区别:
进程是系统分配资源的最小单位,线程是系统调度的最小单位。
一个进程内的线程之间是可以共享资源的。
每个进程至少有一个线程存在,即主线程。

注:
每个进程至少有一个线程存在,即主线程(系统级别的,C语言的主线程)
java级别的主线程(自己写的入口函数main方法(可以没有这个线程)
对java进程来说,至少有一个非守护线程还没终止,进程就不会结束

2.线程的特性

在后面线程的安全性会详细介绍
1.原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。
2.可见性:当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。
3.有序性:程序执行的顺序按照代码的先后顺序执行。

3.线程的创建方式

<1>继承Thread类

class MyThread extends Thread{
    @Override
    public void run() {
        System.out.println("继承Thread类创建线程");
    }
}
 public static void main(String[] args) {
        //1.继承Thread类创建线程
        MyThread t=new MyThread();
        t.start();
        }

<2>实现Runnable接口
将MyRunnable对象作为任务传入Thread中

class MyRunnable implements Runnable{
    @Override
    public void run() {
        System.out.println("继承Runnable接口,创建描述任务对象,实现多线程");
    }
}
  public static void main(String[] args) {
     
        //2.实现Runnable接口
        Thread t1=new Thread(new MyRunnable());
        t1.start();
        }

2.使用匿名内部类实现

 Thread t2=new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("使用Runnable接口,创建匿名内部类实现");
            }
        });
        t2.start();

线程的常用方法

1.构造方法和属性的获取方法
构造方法:
Thread() 创建线程对象
Thread(Runnable target) 使用Runnable对象创建线程对象
Thread(String name) 创建线程对象,并命名
Thread(Runnable target,String name) 使用Runnable对象创建线程对象,并命名
属性的获取方法:

属性获取方法
IDgetId()
名称getName()
状态getState()
优先级getPriority()
是否后台线程isDaemon()
是否存活isAlive()
是否被中断isInterrupted()

2.常用方法
run()和start()
start();方法:启动线程
run();方法:覆写 run 方法是提供给线程要做的事情的指令清单

start()和run()的区别:见代码

public class Thread_Run_VS_Start {
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true){

                }
            }
        }).run();
        /**
         * main线程直接调用Thread对象的run方法会直接在main线程
         * 运行Thread对象的run()方法---->传入的runnable对象.run()
         * 结果,main线程直接运行while(true)
         *
         * start()是启动一个线程,调用新线程的while(true)方法
         * 对比通过start()调用的结果区别
         */

        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true){

                }
            }
        }).start();
    }
}

以上是关于Java多线程的概念特性线程的创建方式以及线程的常用方法的主要内容,如果未能解决你的问题,请参考以下文章

Java高级特性系列--多线程

Java多线程?一篇就够了

iOS详解多线程(实现篇——pThread)

Java多线程基础-第一节1:多线程概念和Java中创建线程的方式

java多线程创建方式以及线程安全

Java多线程——线程的概念和创建