Java高级编程

Java高级编程

零基础学Java系列
163课时 |
54794人已学 |
(30 评论)

加入学习
加入学习

多线程不直接使用run,而是直接使用start(),内部含有synchronized锁,有threadstatus状态,状态不为0时会抛出异常,为什么会抛出异常,因为一个线程只允许被启动一次,重复启动线程的话则会被抛出异常IlegalThreadStateException,该线程是runtimeException子类。

public synchronized void start() {
    if (this.threadStatus != 0) {
        throw new IllegalThreadStateException();
    } else {
        this.group.add(this);
        boolean var1 = false;

        try {
            this.start0();
            var1 = true;
        } finally {
            try {
                if (!var1) {
                    this.group.threadStartFailed(this);
                }
            } catch (Throwable var8) {
                ;
            }

        }

    }
}

start方法用会调用start0方法,该方法是native方法,为什么是native方法,因为start0线程需要依赖不同的操作系统的算法去运行,需要根据不同操作系统,不同的硬件标准,CPU资源,内存资源,IO资源等,无论是在window还是linux等系统,都需要在各个操作系统中去搭建各自的JVM,JVM在整个过程中准备了start0()方法,要想程序启动,程序需要在strat()找到start0()方法,JVM负责实现start0()方法,JVM需要根据不同的操作系统去实现,start0()实际上是JVM匹配操作系统,JVM实际上是找到底层函数与我们操作系统实现算法的控制,实现资源的访问。

private native void start0();

多线程的启动永远只有一个方法,Thread的start()。

 

[展开全文]
remindsolo · 2018-11-24 · Thread类实现多线程 0

Callable 实现多线程

传统进行多线程的实现依赖Runnable,但是其有一个缺点,在其执行后无法获取一个返回值,在JDK1.5之后,提出一个新的

public interface Callable<T>{
	public V call() throws Exception;
}

上面泛型即为返回类型,其避免向下转型的安全隐患。

 

[展开全文]
一粟1992 · 2018-11-23 · Callable接口实现多线程 0

支持多线程开发

进程:传统DOS系统,采用单进程设计,同时只允许一个进程进行。windows系统多进程,允许多任务同时进行。

线程:在进程基础上划分的更小的单元,线程在进程基础上创建使用,线程的使用依赖进程,线程的启动速度比进程快很多,使用多线程进行并发处理的时候,其执行速度很快。

Java是多线程的编程语言,所以java在进行并发处理的时候可以得到更高的处理性能。

 

[展开全文]
一粟1992 · 2018-11-23 · 进程与线程 0

线程的命名与取得:

注:final即不可被覆写

构造方法public Thread(Runnable , String name)

设置名字 public final void setName (String nmae);

取得名字 public final String getName();

在Thread中有获取当前线程的方法:

public static Thread currentThread();

若是没有命名,会按照默认编号命名:Thread-0~oo

当在main()中使用run()而不通过start()来开启一个线程对象时,若获取线程名字会得到main,说明mian也是一个线程

每当用java命令执行程序就表示JVM的进程,每开启一个JVM即多了一个进程,进程中分线程。

在开发中,可以创建一个主线程(main),再继承若干子线程,从而将一些复杂逻辑操作交由子线程处理。

[展开全文]
law_aias · 2018-11-22 · 线程的命名和取得 0

授课教师

Java学习路线重磅上线
6大学习阶段,助您全面掌握Java开发技能
阿里云开发者社区全面升级
一站式体验,助力云上开发!
进入新社区

相关课程

查看更多 >

本课程相关云产品