自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lifesounds的专栏

前进、前进、向前进!

  • 博客(8)
  • 资源 (9)
  • 收藏
  • 关注

转载 java类Timer和TimerTask的使用

这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求      Timer类是用来执行任务的类,它接受一个TimerTask做参数     Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data),2:在某个固定的时间之后(int delay).这两种方式都可以指定任务执行的频率.看个简单的例子:import ja

2008-11-27 15:50:00 696

转载 终止一个线程的方法

转自:http://www.java2000.net/p6943import java.util.*;public class T {  static boolean running = true;  public static void main(String[] agrs) {    Thread a = new Thread(new Runnable() 

2008-11-14 10:39:00 638

转载 java多线程编程 - 实战篇(四)

来源于:转载自dev2dev网友axman的go deep into java专栏。不客气地说,至少有一半人认为,线程的“中断”就是让线程停止。如果你也这么认为,那你对多线程编程还没有入门。   在java中,线程的中断(interrupt)只是改变了线程的中断状态,至于这个中断状态改变后带来的结果,那是无法确定的,有时它更是让停止中的线程继续执行的唯一手段。不但不是让线程停止运行,反而是继续

2008-11-14 10:26:00 956

原创 java多线程编程 - 实战篇(三)

 来源于:转载自dev2dev网友axman的go deep into java专栏。 [深入了解线程对象与线程,线程与运行环境]   在基础篇中的第一节,我就强调过,要了解多线程编程,首要的两个概念就是线程对象和线程。现在我们来深入理解线程对象,线程,运行环境之间的关系,弄清Runnable与Thread的作用。   在JAVA平台中,序列化机制是一个非常重要的机制,如果不能理解并熟练应用序

2008-11-14 08:41:00 661

转载 java多线程编程 - 实战篇(二)

 java多线程编程 - 实战篇(二)来源于:转载自dev2dev网友axman的go deep into java专栏。  发布时间:2007-12-10 16:58:24   本节继续上一节的讨论。   [一个线程在进入对象的休息室(调用该对象的wait()方法)后会释放对该对象的锁],基于这个原因。在同步中,除非必要,否则你不应用使用Thread.sleep(long l)方法,因为

2008-11-13 15:54:00 712

转载 java多线程编程 - 实战篇(一)

java多线程编程 - 实战篇(一)来源于:转载自dev2dev网友axman的go deep into java专栏。  在进入实战篇以前,我们简单说一下多线程编程的一般原则。   [安全性]是多线程编程的首要原则 如果两个以上的线程访问同一对象时,一个线程会损坏另一个线程的数据,这就是违反了安全性原则,这样的程序是不能进入实际应用的。   安全性的保证可以通过设计安全的类和程序员的手工控制

2008-11-13 15:13:00 923

转载 java多线程编程 - 基础篇(四)[wait(),notify()/notityAll()方法]

java多线程编程 - 基础篇(四)[wait(),notify()/notityAll()方法]   来源于:转载自dev2dev网友axman的go deep into java专栏。  关于这两个方法,有很多的内容需要说明.在下面的说明中可能会有很多地方不能一下子明白,但在看完本节后,即使不能完全明白,你也一定要回过头来记住下面的两句话:   [wait(),notify()

2008-11-13 08:40:00 1421 3

转载 内存不能为written或read的解决方案(比较简单)

机器安装了酷我音乐盒之后 提示  ...内存不能为written搜索到这个文章  按照上面的做了  问题果然解决了  转自:http://blog.cfan.com.cn/html/19/234819-107588.html该内存不能为written或read的解决方案( 运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。 “0x????????”指令引用的“0x????

2008-11-12 14:58:00 1751 1

red5 chat 编译所用的jar

red5 chat 编译所需要的red5.jar 只有这个版本可以编译

2013-03-19

red5chat 多人视频 音频会议

package chat; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.red5.server.adapter.ApplicationAdapter; import org.red5.server.api.IConnection; import org.red5.server.api.IClient; import org.red5.server.api.IScope; import java.util.*; import org.red5.server.api.service.ServiceUtils; import org.red5.server.api.service.*; import org.red5.server.api.Red5; //import org.apache.commons.logging.Log; //import org.apache.commons.logging.LogFactory; public class Application extends ApplicationAdapter { public Map<String, CClient> clients = new HashMap<String, CClient>(); public class CClient{ String id = null; String pseudo = null; String role = null; String sexe = null; String status = null; String room=null; String world=null; public String getRole(){ return role; } public String getName(){ return pseudo; } public String getId(){ return id; } public String getSexe(){ return sexe; } public String getStatus(){ return status; } public String getRoom(){ return room; } public String getWorld(){ return world; } public void setRole(String _role){ role = _role; } public void setPseudo(String _pseudo){ pseudo = _pseudo; } public void setSexe(String _sexe){ sexe = _sexe; } public void setId(String _id){ id = _id; } public void setStatus(String _status){ status = _status; } public void setRoom(String _room){ room = _room; } public void setWorld(String _world){ world = _world; } } public boolean connect(IConnection conn, IScope scope, Object[] params) { // pseudo role sexe status room world; // Check if the user passed valid parameters. log.info( "**connection" ); log.info("**connect IConnection nombre params="+ params.length); log.debug("**connect IConnection nombre params="+ params.length); if (params == null || params.length != 6) { // NOTE: "rejectClient" terminates the execution of the current method! rejectClient("6 params expected."); } String pseudo=params[0].toString(); String id=conn.getClient().getId(); ((IServiceCapableConnection) conn).invoke("flashmethod", new Object[]{"connect", pseudo+id}); if (clients.get(pseudo) != null) { rejectClient("PSEUDO ALREADY IN USE"); } // we do create a new user ! log.info( "connection pseudo:"+pseudo); log.info( "connection id:"+id); CClient client = new CClient(); client.setId(id); client.setPseudo(pseudo); client.setRole(params[1].toString()); client.setSexe(params[2].toString()); client.setStatus(params[3].toString()); client.setRoom(params[4].toString()); client.setWorld(params[5].toString()); clients.put(pseudo, client); // clients["yarek"]=client conn.setAttribute("psuedo", pseudo); return true; } public void disconnect(IConnection conn, IScope scope) { log.info( "disconnect"); String pseudo=conn.getClient().getAttribute("pseudo").toString(); //log.info( "disconnect:"+pseudo); String id=conn.getClient().getId(); ((IServiceCapableConnection) conn).invoke("flashmethod", new Object[]{"disconnect", pseudo+id}); // Unregister user. //ServiceUtils.invokeOnAllConnections (scope, "removeuser", new Object[] {pseudo} ); if (pseudo==null) { clients.clear(); } else { CClient u = clients.get(pseudo); clients.remove(u); } // ISharedObject so = getSharedObject(scope, "users_so"); // so.endUpdate(); //IScope appScope = Red5.getConnectionLocal().getScope(); // Call original method of parent class. super.disconnect(conn, scope); } /* * public boolean roomConnect(IConnection iconnection, Object params[]){ if(!super.roomConnect(iconnection, params)){ //log.info((new StringBuilder()).append("Application failed to connect room: ").append(iconnection.getScope().getName()).toString()); return false; } else{ //log.info((new StringBuilder()).append("Application room connect initiated for room ").append(iconnection.getScope().getName()).append(": ").toString()); // We will add our client information right here CClient client = new CClient(); client.setId(params[0].toString()); client.setPseudo(params[1].toString()); client.setRole(params[2].toString()); client.setSexe(params[3].toString()); client.setStatus(params[4].toString()); iconnection.getClient().setAttribute("client", client); return true; } } */ public void callclient() { log.info("callclient called"); IConnection conn = Red5.getConnectionLocal(); if (conn instanceof IServiceCapableConnection) { IServiceCapableConnection sc = (IServiceCapableConnection) conn; log.info("flashmethod called"); sc.invoke("flashmethod", new Object[]{"One", 1}); } } public String debug (String msg){ return msg; } public double add(double a, double b){ return a + b; } }

2013-03-19

VMware P2V之使用详解(Ghost)

VMware P2V之使用详解(Ghost)

2010-03-15

xalan-j_2_7_1-bin.zip

xalan是Apache xml工程下的一个子工程,它实现了w3c xslt1.0和xpath1.0规范,是一个开放源代码的确xslt处理器.xalan提供了java和c++的版本.请用hjsplit2.0合并.

2009-12-04

essential snmp 2nd Edition 书中例子源码

essential snmp 2nd Edition 书中例子源码

2008-11-18

java与模式(清晰书签版)和随书源码.part2

java与模式(清晰书签版)和随书源码.part2 必须与java与模式(清晰书签版)和随书源码.part1下载后放到同目录之后才可解压

2008-11-14

java与模式(清晰书签版)和随书源码part1

java与模式(清晰书签版)和随书源码part1 必须与java与模式(清晰书签版)和随书源码.par2下载后放到同目录之后才可解压

2008-11-14

模仿线程"生产者与消费者"的例子

多线程的例子: 生产者和消费者模式的例子

2008-11-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除