天天看点

java线程(java线程池有几种)

Java线程的创建和启动是怎样的?

  可以定义一个Thread的子类并重写其run方法如:  class MyThread extends Thread {  public void run() {。。。}  }  2。然后生成该类的对象:  MyThread myThread = new MyThread(); 

以上是我对于这个问题的解答,希望能够帮到大家。

Java多线程如何创建多个线程?

  实例要完成的工作非常简单,就是创建10个线程,每个线程都打印从0到99这100个数字,我们希望线程之间不会出现交叉乱序打印,而是顺序地打印。

先来看第一段代码,这里我们在run()方法中加入了synchronized关键字,希望能对run方法进行互斥访问,但结果并不如我们希望那样,这是因为这里synchronized锁住的是this对象,即当前运行线程对象本身。

java中的线程是个什么具体的内容?

这么说吧,电脑系统里有一个任务管理器,任务管理器中有许多进程,一个进程的下面又有很多线程。就是这个意思啊。

例如JAVA的main方法就是一个主线程,程序的执行顺序是自上而下的,如果这个程序没有在这个主线程上创建一个新的线程的话,程序就自上而下的执行,直到程序执行完闭。

如果你在这个主线程上,也就是main方法里创建了一个新的线程,那么这个时候就有两个线程,新的线程开始执行,这个时候主线程并不是停止了,而是一样的继续自上而下的执行,这个时候就有两条线程在执行代码了。

比如有一辆大卡车,遇到到了一个叉路口,这时大卡车就相当于主线程,这个时候只通往一条道路了,如果在叉路口上大卡车里出来了一辆小车,这个时候小车和大卡车分别向两条路上行驶,而并非大卡车会停下来,这个时候的状态就是两个线程在同时运行。

虽说这个比喻不是很好,但很形象!

说白了,我们以前写的那些简单的程序就只有一个线程,就是主线程(main方法),不管有多少判断,循环,它都是自上而下的执行,如果创建了另一个新的线程,这个时候就有两条线同时执行各自的任务了你问的是java api中的哪些类是安全的?还是线程安全的意思?关于线程安全,是指当多个线程访问同一个变量时,该变量不会因为多线程访问产生意想不到的问题,为了避免多线程访问的不可预知的问题,对于程序中多线程能访问到的变量要加锁,即加synchronized,放在同步块中,或者对改变该变量值的方法加synchronized限制。当然jdk中自带的一些类本身就实现了该机制,本身就是线程安全的,比如stringbuffer,vector等。多线程是程序中比较高级的一个方面,希望你能深入理解!线程是语言无关的(具体的研究下操作系统)

简单来说就是程序中的另一个分支

一般一个应用中有UI线程和后台线程

后台线程执行耗时操作

多线程可以提高程序的执行效率

但得考虑线程同步问题在计算机中当一个程序运行的时候就会创建至少一个进程,例如当我们运行QQ的时候,系统就会创建进程来处理我们平时的一些操作,当我们打开任务管理器的时候,在进程的列表里面就可以找到QQ.exe的运行程序;

在计算机中处理进程之外还有另一个概念就是线程,线程是存在于进程当中,一个进程可以包含多个线程;当我们的计算机有多核处理器的时候,使用多线程可以加快程序的运算速率;如果一个进程中只有一个线程,当程序遇到一个比较耗时的计算的时候,由于程序是单线程的,那么程序只能等待这个运算结束的时候再继续运行,这样会大大的降低程序的效率;当时用多个线程的时候,在某个线程遇到比较耗时的运算的时候,该线程可以继续自己的运算,但是其他的线程也可以同步进行,这样当耗时的计算结束之后,其他线程也将自己所需要的东西执行完毕,这样就会很大的提高程序执行效率;

在程序运行中对于文件的保存相对于处理器的运算速度来说是很慢的,当我们程序中接收到一个保存文件的信息之后,我们可以创建一个保存文件的线程,在主线程中我们可以继续进行我们的其他运算,这样当文件保存好之后,我们的其他运算也会完成,互不影响;

在Java中我们可以创建一个自己的类继承于Thread类,并且重写run() 方法,当线程启动之后,run()方法里面的操作都在线程中进行处理,而不会影响主线程的信息;

当我们创建好一个自定义线程类之后,我们可以创建这个自定义线程的对象,进行线程的启动;线程须调用start();方法进行启动,这样run()方法里面的内容才会在线程中运行;如果我们不去调用start()方法,那我们只是创建了一个普通的类,即使我们手动调用run()方法,run()方法里面的内容也不会在线程中运行;

在Java中线程主要有初始状态,运行状态,阻塞状态,终止状态等;当我们新创建一个线程对象的时候,此时线程的状态为初始状态;当我们调用start()之后,此时的线程才被激活成为运行状态,之后run()方法里面的信息才会在子线程中运行;我们可以在不同的阶段调用不同的方法将线程设置为不同的状态;比如有时候我们的操作需要等待其他线程中运算结束之后才可以继续进行,这时候我们就可以将线程设置为等待状态,当需要的资源满足条件之后,可以继续运行当前的线程;

简述Java语言中线程的特点。

线程化是允许多个活动共存于一个进程中的工具。大多数现代的操作系统都支持线程,而且线程的概念以各种形式已存在了好多年。Java 是第一个在语言本身中显式地包含线程的主流编程语言,它没有把线程化看作是底层操作系统的工具。

有时候,线程也称作轻量级进程。就象进程一样,线程在程序中是独立的、并发的执行路径,每个线程有它自己的堆栈、自己的程序计数器和自己的局部变量。但是,与分隔的进程相比,进程中的线程之间的隔离程度要小。它们共享内存、文件句柄和其它每个进程应有的状态。

进程可以支持多个线程,它们看似同时执行,但互相之间并不同步。一个进程中的多个线程共享相同的内存地址空间,这就意味着它们可以访问相同的变量和对象,而且它们从同一堆中分配对象。尽管这让线程之间共享信息变得更容易,但您必须小心,确保它们不会妨碍同一进程里的其它线程。

Java 线程工具和 API 看似简单。但是,编写有效使用线程的复杂程序并不十分容易。因为有多个线程共存在相同的内存空间中并共享相同的变量,所以您必须小心,确保您的线程不会互相干扰。