面试题多线程(求教一个百度的面试题,关于多线程单例模式的)

本文目录
求教一个百度的面试题,关于多线程单例模式的
多线程的单例问题非常类似consensus问题:一堆进程进入,退出时的状态必须是第一个进入之后的初始化过的状态。那么用原子操作应当很容易实现。随便想了一下,用两个原子计数,一个表示对象是不是ready,另一个表示是不是正在初始化:
if (fetch(obj_ready))
{
return obj;
}
else
{
// 如果没有人在构建,就去构建
if (fetch_and_set(obj_under_build,true) == false)
{
obj = new obj();
set(obj_ready, true);
return obj;
}
// 否则退出
else
{
return nullptr;
}
}
即使不用锁,也必然有某种排它机制,因为对象正在初始化的时候是不可用的。这时候如果又有人来访问它,要么让访问者等待,要么把访问者踹出去。
java面试题:请用多线程显示,每三个数字为一组,直到30.
public class Test{
public static Object obj = new Object();
public static void main(String args){
new A().start();
new B().start();
}
}
class A extends Thread{
public void run(){
try{
synchronized(Test.obj){
for(int i = 1 ; i 《 31;i += 6){
Test.obj.notify();
System.out.println("线程A:"+ i);
System.out.println("线程A:"+ (i+1));
System.out.println("线程A:"+ (i+2));
Test.obj.wait();
}
}
}catch(Exception e){
e.printStackTrace();
}
}
}
class B extends Thread{
public void run(){
try{
synchronized(Test.obj){
for(int i = 4 ; i 《 31;i += 6){
Test.obj.notify();
System.out.println("线程B:"+ i);
System.out.println("线程B:"+ (i+1));
System.out.println("线程B:"+ (i+2));
Test.obj.wait();
}
}
}catch(Exception e){
e.printStackTrace();
}
}
}
C面试题:单线程与多线程的问题
不是,前提是你又足够的空间或者速度。比如说一条路,很多车要过,要是路很宽的话,当时是很多车一起过才效率高了,但是要是路很窄的话,那肯定是不能很多车一起过的了。就好想现在还在研究超级电脑,大型的那种数据系统,普通的电脑就是单线程来处理也不够用啊!

更多文章:
下载免费java(有什么无病毒、安全的网站可以免费下载java格式手机游戏,且是触屏全屏的)
2026年9月24日 18:00
php7连接mysql数据库操作(PHP7连接mysql数据库方法)
2025年12月29日 00:15
c语言终止程序(C语言~~~如何使程序中途结束、跳出~~~)
2025年6月5日 07:30
flex布局的兼容性(怎么用css使得input的输入框对齐,要写出代码,别百度其他的)
2026年7月27日 12:15
正则表达式支持库(怎样在aardio中使用正则表达式,用哪个函数)
2025年11月17日 05:30
腾讯云数据库管理工具(navicat导入mangodb几百万行传输中断)
2025年12月5日 03:30
java 线程安全(java中为什么说,String是线程安全的)
2026年5月1日 04:00
下载excel教程(windows家庭中文版的怎么下载excel教程)
2026年8月11日 20:15
delphi控制485(如何在delphi中使用海康威视的485口)
2026年9月4日 06:00
tengine windows(天龙八部报错是怎么回事啊 )
2026年2月14日 17:45
ctab化学名称?predictive与predictable的区别
2026年8月14日 15:30












