南栀倾寒   >   标签墙   >   多线程 标签

多线程死锁的模拟 有更新!

2017-09-05

死锁的原因:  线程1锁住资源A等待资源B,线程2锁住资源B等待资源A,两个线程 都在等待自己需要的资源,而这些资源被另外的线程锁住,这些线 程你等我,我等你,谁也不愿意让出资源,这样死锁就产生了。  哲学家进餐问题  解决死锁的办法之一就是:加大锁的粒度。 public class DeadLock02 { // 绑匪:说:你给我500亿,我就放了你儿子,目的:得到了500亿 // 富翁:说:你先放了我儿子,,我就给你钱,目的:赎回儿子。 public static void main(String[] args) { MyThread02 mt1 = new MyThread02(); MyThread02 mt2 = new MyThread02(); mt1.flag = true; mt2.flag = false; new Thread(mt1).start(); new Thread(mt2).start(); } } class Kidnapper{ public void say(){ System.out.println("你给我500亿,我就放了你儿子");....

利用多线程进行文件的复制 有更新!

2017-09-05

class FileCopy implements Runnable { private File src;// 源文件 private File tar;// 目标文件 private int n;// 分几部分 private int no;// 每部分的编号 public FileCopy(File src, File tar, int n, int no) { this.src = src; this.tar = tar; this.n = n; this.no = no; } @Override public void run() { try { RandomAccessFile rafsrc = new RandomAccessFile(src, "r"); RandomAccessFile raftar = new RandomAccessFile(tar, "rw"); long len = src.length(); long size = len % n == 0 ? len / 4 : len / 4 + 1;// 每部分的字节数 byte[] b = new b....