try { //注意,关闭流顺序,后开先关。 fis=new FileInputStream("F:/Java/sb.PNG"); bis=new BufferedInputStream(fis); fos=new FileOutputStream("F:/Java/s.png"); bos=new BufferedOutputStream(fos); //缓冲流中默认的byte数组长度为8192 int temp=0; while((temp=bis.read())!=-1){ bos.write(temp); } bos.flush(); }catch (IOException e){ e.printStackTrace(); }finally { try { if (bis != null) { bis.close(); } if (fis != null) { fis.close(); } if (bos != null) { bos.close(); } if (fos != null) { fos.close(); }
先开后关的话,那关闭顺序不是bos,fos,bis,fis吗?
老师,这个在主线程的睡眠是让哪个子线程睡眠?
老师不是后开先关么,bos和fos在bis和fis后面开的,为什么关闭时先关闭bis和fis?
老师绝对路径和相对路径是啥意思
老师,为什么在主线程休眠判断线程是否存活是false,而在子线程休眠判断是true?
这里public static MyInteger valueOf()和public static void valueOf()有啥区别啊
老师,主线程与A线程联合后,那B线程是怎么运行的
老师,sleep()和yeid()哪个比较常用?
/** * 放馒头 */ public synchronized void push(ManTou manTou){ while(this.index == this.mt.length){ try{ this.wait(); }catch (InterruptedException e){ e.printStackTrace(); } } this.notify(); this.mt[this.index] = manTou; this.index++; } /** * 取馒头 */ public synchronized ManTou pop(){ while(this.index == 0){ try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.notify(); this.index--; return this.mt[this.index]; }
老师,我想问下执行完notify之后,是把当前线程的对象锁移交给在就绪状态使用相同对象锁的另一个线程吗?那么当前线程中的有关对象里的属性还能继续使用么,比如push方法在执行notify()后,SyncStack类的对象ss中的mt数组和index变量还有值么?唤醒之后push方法后面的代码还继续执行吗?还是直接到pop()中执行?为什么?
老师,我发现获取Class对象的这三个方法,都是需要你已知Class对象,然后再给我们输出Class对象,这么做好像有点多此一举啊
我没有写flush为什么也可以打印出来呢?
package com.xykj; public class StopThread implements Runnable{ private boolean flag = true; public void stop(){ this.flag = false; } @Override public void run() { System.out.println(Thread.currentThread().getName()+"线程开始"); int i = 0; while(flag){ System.out.println(Thread.currentThread().getName() + " " + i++); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(Thread.currentThread().getName()+"线程结束"); } public static void main(String[] args) throws Exception{ System.out.println("主线程开始"); StopThread st = new StopThread(); Thread t1 = new Thread(st); t1.start(); System.in.read(); st.stop(); System.out.println("主线程结束"); } }
为什么在键盘上只有输入空格才会结束流阻塞?
com.xykjStopThread Runnable{ = (){ .= } () { System..println(Thread.().getName()+)i = (){ System..println(Thread.().getName() + + i++){ Thread.()} (InterruptedException e) { e.printStackTrace()} } System..println(Thread.().getName()+)} (String[] args) Exception{ System..println()StopThread st = StopThread()Thread t1 = Thread(st)t1.start()System..read()st.stop()System..println()} }
为什么在键盘只有输入回车才会结束流阻塞。
关于add和append方法,
在StringBuilder中,是没有add方法,添加元素是用append的方法,但是ArrayList中,是使用add的。
这个在实际编程中很容易记混,所以想问下,使用add或者append,是基于什么逻辑,才导致一种容器使用append,另一种容器使用add吗?还是说这个是记下来的,没有什么特殊的逻辑
老师,请问一下这里的dos.writeLong(n);的作用是什么呢
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637