java多线程之计算数量
摘要:package Thread.Abort;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
//计数类
class Count {//DATA
private int count = 0;
private Random rand = new Random(47);
//
public synchronized int increment() {
int temp = count;
if (rand.nextBoolean())
Thread.yield();
return (count = ++te
阅读全文
posted @
2014-05-27 20:50
上校
阅读(9132)
推荐(0) 编辑
深入研究java.lang.ThreadLocal类(转)
摘要:引用:http://lavasoft.blog.51cto.com/62575/51926/
一、概述
ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。
从线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收(除非存在对这些副本的其他引用)。
阅读全文
posted @
2014-05-27 00:27
上校
阅读(296)
推荐(1) 编辑
java多线程之ThreadLocal
摘要:ThreadLocal保证数据同步
package Thread.Common;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
class Accessor implements Runnable {
private final int id;
public Accessor(int idn) {
id = idn;
}
阅读全文
posted @
2014-05-27 00:18
上校
阅读(673)
推荐(0) 编辑
java多线程之AtomicInteger
摘要:AtomicInteger原子操作实现同步
package Thread.Common;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
阅读全文
posted @
2014-05-26 23:16
上校
阅读(6594)
推荐(0) 编辑
Java多线程之简单的线程同步实例
摘要:数据类:
package Thread.MyCommon;
public class Data {
public int num = 0;
public synchronized int getEven() {
++num;
Thread.yield();//让另外线程先执行,加大测试效果几率
++num;
return num;
}
}
阅读全文
posted @
2014-05-26 21:06
上校
阅读(8829)
推荐(0) 编辑
Java多线程之捕获异常
摘要:1.主线程不能捕获到子线程的异常
package Thread.Exection;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ExeceptionThread implements Runnable {
@Override
public void run() {
throw new RuntimeException();
}
阅读全文
posted @
2014-05-25 23:49
上校
阅读(13370)
推荐(0) 编辑
Java多线程之join
摘要:将另外一个线程join到当前线程,则需要等到join进来的线程执行完才会继续执行当前线程。
package Thread.join;
class Sleeper extends Thread {
private int duration;
public Sleeper(String name, int sleepTime) {
super(name);
duration = sleepTime;
start();
}
阅读全文
posted @
2014-05-25 15:01
上校
阅读(6725)
推荐(0) 编辑
Java多线程之后台线程不执行finally
摘要:后台线程不执行finally
package wzh.daemon;
import java.util.concurrent.TimeUnit;
class ADaemon implements Runnable {
@Override
public void run() {
阅读全文
posted @
2014-05-25 13:42
上校
阅读(3192)
推荐(0) 编辑
Java多线程之DaemonThreadFactory
摘要:通过DaemonThreadFactory创建后台线程池
package wzh.daemon;
import java.util.concurrent.ThreadFactory;
public class DaemonThreadFactory implements ThreadFactory {
@Override
public Thread newThread(Runnable r) {
Thread t = new Thread(r);
t.setDaemon(true);
return t;
阅读全文
posted @
2014-05-25 13:26
上校
阅读(3172)
推荐(0) 编辑
Java多线程之后台线程
摘要:将线程设置成后台线程Daemons 主线程结果后,后台线程将自动结果。
package wzh.test;
import java.util.concurrent.TimeUnit;
class SimpleDaemons implements Runnable{
@Override
public void run() {
try {
while (true) {
阅读全文
posted @
2014-05-25 12:26
上校
阅读(1306)
推荐(0) 编辑
java多线程之从任务中获取返回值
摘要:package wzh.test;
import java.util.ArrayList;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
class TaskWithResult implements Callable{
private int id;
public TaskWithResult(int id){
this.id=id;
}
@Override
public String call() throws Exception {
return "result of TaskWithResult "+id;
}
}
阅读全文
posted @
2014-05-25 10:46
上校
阅读(1896)
推荐(0) 编辑
java多线程总结
摘要:原文:http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html
在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。
对于直接继承Thread的类来说,代码大致框架是:
阅读全文
posted @
2014-05-25 09:46
上校
阅读(482)
推荐(1) 编辑
java之生产者与消费者
摘要:package com.produce;
import java.util.LinkedList;
import java.util.Queue;
/*@author shijin
* 生产者与消费者模型中,要保证以下几点:
* 1 同一时间内只能有一个生产者生产 生产方法加锁sychronized
* 2 同一时间内只能有一个消费者消费 消费方法加锁sychronized
* 3 生产者生产的同时消费者不能消费 生产方法加锁sychronized
* 4 消费者消费的同时生产者不能生产 消费方法加锁sychronized
* 5 共享空间空时消费者不能继续消费 消费前循环判断是否为空,空的话将该线程wait,释放锁允许其他同步方法执行
* 6 共享空间满时生产者不能继续生产 生产前循环判断是否为满,满的话将该线程wait,释放锁允许其他同步方法执行
*/
阅读全文
posted @
2014-05-24 23:35
上校
阅读(1654)
推荐(0) 编辑