会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132452个问题
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 1456楼

f039e1e72295ce64302ef95163c0532.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器 1458楼


308cdde3face35c5bf06f2b8972524a.png

请问下,卢老师这节课的System.out.println(Thread.isAlive()+"  4"); 在main方法下主线程里主线程阻塞子线程2结束后打印的4 为什么是子线程的而不是主线程的

JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 1459楼

// 程序员奖金类
class ProgrammerBonus {
    private String name;

    public ProgrammerBonus(String name) {
        this.name = name;
    }
    // 领取奖金
    public void TakeBonus () {
        // 不仅可以用 ProgrammerBonus.class,用 Bonus.class 也行
        synchronized (Bonus.class) {
            try {
                System.out.println(this.name + "被领导表扬");
                Thread.sleep(3000);
                System.out.println(this.name + "拿到奖金");
                Thread.sleep(2000);
                System.out.println(this.name + "话不多说,一切尽在行动中");
                Thread.sleep(3000);
                System.out.println(this.name + "离开办公室");
                Thread.sleep(4000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

// 领取奖金线程
class Bonus extends Thread {
    private ProgrammerBonus pb;

    public Bonus(ProgrammerBonus pb) {
        this.pb = pb;
    }

    @Override
    public void run() {
       this.pb.TakeBonus();
    }
}

public class ThreadConflictTest03 {

    public static void main(String[] args) {
        ProgrammerBonus pb1 = new ProgrammerBonus("张三");
        Bonus b1 =new Bonus(pb1);
        ProgrammerBonus pb2 = new ProgrammerBonus("李四");
        Bonus b2 = new Bonus(pb2);
        ProgrammerBonus pb3 = new ProgrammerBonus("王五");
        Bonus b3 = new Bonus(pb3);

        b1.start();
        b2.start();
        b3.start();
    }
}

老师,在上面代码中,用类对象作为锁对象,我试了下发现用 ProgrammerBouns.class 或 Bouns.class 都可以,这两个类对象用起来有啥区别嘛?


JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 1460楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 1461楼

web浏览器提交请求后,服务器端收到请求,但是服务器端一直阻塞,使用数据流一直卡着,麻烦看看原因

package com.bzsxt.server;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;

import com.bzsxt.chat.CloseUtil;

/*
 *  #通过web页面提交数据时候,提交数据没有换行标识,所以用缓冲流读取不到换行.
 * */
public class Server3 {

	public static void main(String[] args) {
		ServerSocket server = null;
		Socket socket = null;
		BufferedReader bReader = null;
		BufferedWriter bWriter = null;
		String CRLF="\r\n";//换行
		String BLANK=" ";//空格

		try {
			server = new ServerSocket(8080);
			System.out.println("服务端开启");
			socket = server.accept();
			byte [] bs = new byte [20480];
			
			DataInputStream dataInputStream= new DataInputStream(socket.getInputStream());
			int len = -1;
			while ((len=dataInputStream.read(bs, 0, bs.length))!=-1) {
				System.out.println(new String(bs, 0, len, "utf-8"));
			}
			System.out.println("game over -----------");
			
			/**对Web浏览器的请求作出响应*/
			StringBuilder sb=new StringBuilder();
			StringBuilder sbContent=new StringBuilder();//响应的文本
			sbContent.append("<html><head><title>响应结果</title></head>");
			sbContent.append("<body>登录成功</body></html>");
			
			//(1)拼接响应头
			sb.append("HTTP/1.1").append(BLANK).append(200).append(BLANK).append("OK");
			sb.append(CRLF);//换行
			sb.append("Content-Type: text/html;charset=utf-8");
			sb.append(CRLF);//换行
			sb.append("Content-Length:").append(sbContent.toString().getBytes().length).append(CRLF);
			sb.append(CRLF);//换行,代表响应头与响应的正文部门之间的空行
			sb.append(sbContent);
			
			//通过流输出 
			bWriter=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"utf-8"));
			bWriter.write(sb.toString());
			bWriter.flush();
			bWriter.close();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			CloseUtil.close(bReader, socket, server);
		}
	}
}


JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 1462楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 1465楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 1466楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器 1467楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 1468楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/数据结构 1469楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637