关于java线程面试题(java多线程面试问题)

今天给各位分享关于java线程面试题的知识,其中也会对java多线程面试问题进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

1、java 线程面试题2、JAVA面试题 JAVA中创建线程有几种不同的方式3、Java面试题,线程的几种状态是什么4、java有关线程的面试题

java 线程面试题

我不知道你是不是这个意思,thread1,thread2两个线程每次让j增加1,thread3,thread4两个线程每次让j减少1,四个线程每个都调用250次相关加减一操作。最终j的结果都是100.

下面程序,总计会打印出1000个数,不管怎么样最后一个数永远是100,即j的终值永远是100,为了看中间结果运行过程我加了sleep,但无关紧要。你看看符合你要求不?

就像楼上说的,启动1000条线程不是很明白,不一致的继续讨论

package com.kalort;

public class ThreadTest

{

public static void main(String[] args)

{

Operator operator = new Operator();

Thread thread1 = new IncreaseThread(operator);

Thread thread2 = new IncreaseThread(operator);

Thread thread3 = new DecreaseThread(operator);

Thread thread4 = new DecreaseThread(operator);

thread1.start();

thread2.start();

thread3.start();

thread4.start();

}

}

class IncreaseThread extends Thread

{

private Operator operator;

public IncreaseThread(Operator operator)

{

this.operator = operator;

}

public void run()

{

for (int i = 0; i 250; i++)

{

try

{

Thread.sleep((long)(Math.random() * 100));

}

catch (InterruptedException e)

{

e.printStackTrace();

}

operator.increase();

}

}

}

class DecreaseThread extends Thread

{

private Operator operator;

public DecreaseThread(Operator operator)

{

this.operator = operator;

}

public void run()

{

for (int i = 0; i 250; i++)

{

try

{

Thread.sleep((long)(Math.random() * 100));

}

catch (InterruptedException e)

{

e.printStackTrace();

}

operator.decrease();

}

}

}

class Operator

{

private int j = 100;

public synchronized void increase()

{

while (100 != j)

{

try

{

wait(); // 如果另外线程还没减一就等待

}

catch (InterruptedException e)

{

e.printStackTrace();

}

}

j++;

System.out.println(j);

notify(); // 通知另外线程已经加一了。

}

public synchronized void decrease()

{

while (100 == j)

{

try

{

wait();

}

catch (InterruptedException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

}

j–;

System.out.println(j);

notify();

}

}

JAVA面试题 JAVA中创建线程有几种不同的方式

第一种方式:使用Runnable接口创建线程

第二种方式:直接继承Thread类创建对象

使用Runnable接口创建线程

1.可以将CPU,代码和数据分开,形成清晰的模型

2.线程体run()方法所在的类可以从其它类中继承一些有用的属性和方法

3.有利于保持程序的设计风格一致

直接继承Thread类创建对象

1.Thread子类无法再从其它类继承(java语言单继承)。

2.编写简单,run()方法的当前对象就是线程对象,可直接操作。

在实际应用中,几乎都采取第一种方式

Java面试题,线程的几种状态是什么

线程在执行过程中,可以处于下面几种状态:

就绪(Runnable):线程准备运行,不一定立马就能开始执行。

运行中(Running):进程正在执行线程的代码。

等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。

睡眠中(Sleeping):线程被强制睡眠。

I/O阻塞(Blocked on I/O):等待I/O操作完成。

同步阻塞(Blocked on Synchronization):等待获取锁。

死亡(Dead):线程完成了执行。

关于java线程面试题(java多线程面试问题)

java有关线程的面试题

线程,你要弄清楚几个概念:

1、什么是线程?(进程中的子进程或从主进程中产生的子程序)

2、怎么创建线程?(继承了Thread类或实现了Runnable接口的类)

3、线程怎么运行?(抢占CPU时间,分片运行)

4、线程中同步的概念?(多个线程访问同一个对象时排队和不排队的问题)

5、线程的生命周期有哪些?(不存在-创建-运行、等待、睡眠、-死亡)

6、死锁?(A线程中用到B线程的资源,B中同时也用到A,若同时运行AB,在同步的情况下会出现A等B结束,B等A结束,这样同时无限等待)

关于关于java线程面试题和java多线程面试问题的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月30日 22:14:56
下一篇 2024年3月30日 22:25:11

相关推荐

  • java多线程并发编程基础,Java多线程并发执行返回

    电脑培训分享Java并发编程:核心理论 电脑培训发现本系列会从线程间协调的方式(wait、notify、notifyAll)、Synchronized及Volatile的本质入手,详细解释JDK为我们提供的每种并发工具和底层实现机制。 人们开始意识到了继承的众多缺点,开始努力用聚合代替继承。软件工程解决扩展性的重要原则就是抽象描述,直接使用的工具就是接口。接…

    2024年5月23日
    4800
  • javaservlet是不是线程安全的,servlet线程安全吗

    java问题,servlet问题,servlet在什么时候被初始化?它是线程安全吗? Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求。所以Servlet是线程不安全的。 ServletContext是可以多线程同时读/写属性的,线程是不安全的。要对属性的读写进行同步处理或者进行深度Clone()。 Ser…

    2024年5月23日
    5200
  • java线程中再创建线程,JAVA创建线程

    Java多线程初学者指南(3):使用Runnable接口创建线程 1、方式一:通过继承Thread类创建线程Java中的线程类是Thread类,我们可以通过继承Thread类创建一个新的线程。 2、(3)调用线程对象的start()方法来启动该线程。通过Runnable接口创建线程类 (1)定义runnable接口的实现类,并重写该接口的run()方法,该r…

    2024年5月23日
    4600
  • 关于java如何查找线程的信息

    kill-3生成的线程堆栈怎么查看 通过给JVM发送一个SIGQUIT信号,您可以得到一个线程堆。 threaddump文件就是文本文件,可以使用任何文本查看工具进行查看; 建议使用比较高效的工具,比如more, less 等。 “Full thread dump”是一个全局唯一的关键字,你可以在中间件和单机版本Java的线程堆栈信息的输出日志中找到它(比如…

    2024年5月23日
    4100
  • java应届面试,java应届生面试题

    Java面试中需要注意哪些细节问题? 1、在Java面试中,很大程度上,你能不能赢得Java面试官的芳心,就看你跟他交谈的过程,在交谈中,你需要注意,礼貌用语,声音的大小要控制好,太大感觉有人在跟你吵架,大小感觉你本人没有自信心。 2、简要介绍Java程序的健壮性。 Java程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对干类型的…

    2024年5月23日
    4100
  • linux内核面试,Linux内核面试题

    linux认证的面试题及答案 1 * * * /bin/sh /usr/bin/fileback 有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?参考答案:(1)第一种方法:用户应使用crontab e 命令创建crontab文件。 iptables是否支持time时间控制用户行为,如有请写出具体操作步骤。…

    2024年5月23日
    4100
  • linux多线程信号,linux多线程并发的处理方式

    Linux多进程和线程同步的几种方式 1、Linux系统中,实现线程同步的方式大致分为六种,包括:互斥锁、自旋锁、信号量、条件变量、读写锁、屏障。其最常用的线程同步方式就是互斥锁、自旋锁、信号量。 2、共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针其他通信机制运行效率较低设计的。往往与其它通信机制,如信号量结合使用, 来达到进程间…

    2024年5月23日
    4200
  • java线程池博客园,java线程池使用方法

    Java线程:新特征-线程池 java线程池的实现原理很简单,说白了就是一个线程集合workerSet和一个阻塞队列workQueue。当用户向线程池提交一个任务(也就是线程)时,线程池会先将任务放入workQueue中。 corePoolSize:核心池的大小,这个参数跟后面讲述的线程池的实现原理有非常大的关系。 所谓线程池就是将线程集中管理起来,当需要线…

    2024年5月23日
    4000
  • java线程池工具类,java线程池的工作流程

    java创建线程池有哪些 java线程池的实现原理很简单,说白了就是一个线程集合workerSet和一个阻塞队列workQueue。当用户向线程池提交一个任务(也就是线程)时,线程池会先将任务放入workQueue中。 ava通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,…

    2024年5月23日
    3500
  • linuxjava多线程缓存,linux多线程并发的处理方式

    windows和linux多线程那个快 可以这么说,如果要用windows跑的比linux快或者差不多,那么2者使用的软件可能很多不一样。linux使用的软件人更多,支持更好。 答案是肯定的:LINUX操作系统,这是因为windows 系统占用了太多资源,而linux所有的东西是开源的,执行某项程序,直接有内核控制,而windows 系统则要从内核中调取指令…

    2024年5月22日
    4000

发表回复

登录后才能评论



关注微信