`

java thread / process / thread runnable / thread sleep / thread run

    博客分类:
  • Java
阅读更多

 

Java Thread &Memory Note

http://sslaowan.iteye.com/blog/1450671

 

top -p pid -H  see jvm thread on linux.I read the source of the jvm,and found jvm create threads  using NPTL under Linux2.6+.

pstree pid  see stat jvm count of thread.

 

jmap -histo vmid | jmap -histo:live vmid

jstack vmid

 

为什么会"well-known file is not secure" ?

http://lkf520java.iteye.com/blog/1560686

http://stackoverflow.com/questions/9100149/jstack-well-known-file-is-not-secure?rq=1

最近一段时间经常使用JDK自带工具jmap和jstack来dump JVM heap和JVM 线程栈的log来分析问题,执行这两个命令当时让我最摸不着头脑的就是碰到这个问题:well-known file is not secure

eg:

 

上网google了一把,在stackoverflow上找到答案:http://stackoverflow.com/questions/9100149/jstack-well-known-file-is-not-secure?rq=1,大概意思是: 我们可以在机器上找到 /tmp/hsperfdata_$USER/$PID一个这样的文件,当我们执行jmap或者jstack出现上叙信息时,先检查执行该命令的用户是否和hsperfdata_$USER这个文件所属的用户一致,如果不一致,切换至成一致再执行即可。

 

nmon_x86_64_rhel54 -f -t -s 10 -c 1000

 

 

 

Bookmark:

Virtual VM http://www.longtask.com/blog/?p=465

JConsole http://simpleframework.net/blog/v/16528.html

JAVA 进程异常高的 CPU 占用率 http://blog.csdn.net/subchen/article/details/5801072

Java多线程编程总结 http://lavasoft.blog.51cto.com/62575/27069

Linux基础(7)-linux管理监控(pstree,top) http://www.lifeba.org/arch/linux_pstree_top.html

top命令中的交互命令,shift+p按CPU排序,shift+m按内存使用排序,shift+t 按CPU用时排序,shift+n按PID排序   http://blog.163.com/xychenbaihu@yeah/blog/static/1322296552012017105732762/

java:找出占用CPU资源最多的那个线程(HOW TO)  http://wenyue.me/blog/382

java 中关于信号的处理在linux下的实现  http://blog.csdn.net/raintungli/article/details/7178472

 

sdfsfd

 

package com.javaeye.lindows.thread;

public class YieldTest implements Runnable {
	
	public void run() {
		synchronized(this) {
			for(int i=0;i<50;i++) {
				if(i==25) {
					try {
						wait(5000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				System.out.println(i);			
			}
			
		}
			
		
	}
	
	public synchronized void sayHello() throws InterruptedException {
		
		for(int i=0;i<20;i++) {
			if(i==10) {
				Thread.yield();
				
			}
			System.out.println("hello:"+i);
		}	
		notifyAll();
	}
	
	public static void main(String[] args) throws InterruptedException {
		
		YieldTest yt = new YieldTest();
		Thread t = new Thread(yt);
		t.start();
		Thread.yield();
		yt.sayHello();
		
	}

}

 

sadfff

控制任务管理器CPU曲线(Java实现)

http://blog.csdn.net/taizhoufox/article/details/4664734

如何让windows任务管理器实现你想要的曲线呢,下午查了下资料,自己动手实践了一下。思路很简单,CPU使用记录的数据来源就是CPU的使用率,只要让它一会忙(执行循环),一会闲(sleep),最终得到(每周期执行时间/一个周期)就能得到一个数字,将这些离散的数字连接起来,就是曲线图了。

画直线和画正弦都还好,只是后来到了加速图像显示的时候,出现一个图形如下图

http://dl2.iteye.com/upload/attachment/0103/4781/fb66a0f1-940f-3c29-b3b9-f7cb0f7b9d05.jpg

 

很是奇怪,到底是什么原因呢?肯定是跟任务管理器CPU曲线的刷新率相关的。

假设刷新时间为1S,

那么第三个程序在的flushtime在小于1000的情况下可以起到控制图像的作用(小于1000,执行的时间和sleep的时间都会乘上相同的系数,最终的比例还是不会变的)。

如果他它大于1000的话,那么在一段时间,它将得到几个相同的点,然后由于短暂的突变(比如执行时间很长,sleep时间很短,则会出现波谷,执行时间很短,sleep时间很长,则会出现波峰),它又将回到回来的位置,但是总体的形状还是保持原来的基本样式,这应该就能解释上面的图形了吧。。。。 

 

以下是java代码

 

 

package system;
public class CpuUsage {
	
	public static void drawLine(){	
		int usage = 700;
		System.out.println("Test Begins...");		
		while(true){		
			long start = System.currentTimeMillis();
			while(System.currentTimeMillis() - start < usage );
			try{
				Thread.sleep(1000-usage);
			}catch(Exception e){
				System.out.print(e);
			}		
		}
	}
	public static void drawSin(){
		double x = Math.PI / 2;	
		while(true){
			//下面这一句+1是因为sinx可能为负数,最大为-1,加上1的话就保证为正了
			//*0.5是应为加1之后,最大数可能达到2,为了限制在1以内,所以*0.5
			long usage = (long)((Math.sin(x)+1)*0.5*1000);
			System.out.println(usage);
			long start =  System.currentTimeMillis();
			while(System.currentTimeMillis() - start < usage);
			try{
				Thread.sleep(1000 - usage);
			}catch(Exception e){
				System.out.print(e);
			}
			x += 0.1;
		}
	}	
	public static void drawSinSpeedup(){
		double x = Math.PI / 2;	
		//加入了刷新时间,可以调控曲线弯曲程度
		int flushtime = 5000;
		while(true){
			long usage = (long)((Math.sin(x)+1)*0.5*flushtime);
			System.out.println(usage);
			long start =  System.currentTimeMillis();
			while(System.currentTimeMillis() - start < usage);
			try{
				Thread.sleep(flushtime - usage);
			}catch(Exception e){
				System.out.print(e);
			}
			x += 0.1;
		}
	}
} 

 

 

 

end

  • 大小: 95.5 KB
  • 大小: 8.9 KB
分享到:
评论

相关推荐

    java线程与并行(主要讲解java的nio包某些内容)

    Java线程可以通过继承`java.lang.Thread`类或实现`Runnable`接口来创建。 ##### 创建线程 1. **继承Thread类** - 创建`Thread`类的子类并重写`run()`方法。 - 实例化子类对象,并调用`start()`方法启动线程。 ...

    java线程学习

    Java中线程的创建主要有两种方式:继承`Thread`类或者实现`Runnable`接口。 - **通过实现Runnable接口创建线程**:这种方式更为常用,因为它避免了Java单继承带来的限制。创建一个实现了`Runnable`接口的类,并...

    Java线程的详细讲解

    本文将详细介绍Java中线程的创建与管理,包括两种主要的实现方式:继承`Thread`类和实现`Runnable`接口,并对线程的基本操作方法以及同步和死锁的概念进行深入探讨。 #### 三、Java多线程实现方式 ##### 1. 继承...

    基于JAVA平台的多线程与并行的资料

    1. **继承Thread类**:可以通过继承`java.lang.Thread`类并重写`run()`方法来创建线程。这种方式简单直观,但不建议过度使用,因为它限制了类的扩展性,因为Java不支持多重继承。 ```java class BackgroundSorter...

    java多线程实例

    Java 多线程通过继承 `Thread` 类或实现 `Runnable` 接口来创建,提供了高效且灵活的方式来并发执行任务。理解并掌握线程的创建、控制和同步是Java开发中不可或缺的部分,尤其在处理高并发和性能敏感的应用场景时。...

    java程序设计线程代码

    Thread.sleep(500); // 休眠0.5秒 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("访问:" + name); } } } ``` **运行结果**: ``` 访问:A 访问:A 访问:A 访问:B ...

    java扫描网段

    3. **多线程技术**:由于网络扫描通常涉及大量并发任务,因此需要熟练运用Java中的多线程机制,如`Thread`类和`Runnable`接口,以提高扫描效率。 4. **系统调用与进程管理**:在Java中执行外部命令(如ping命令),...

    JAVA生产者消费者

    Thread.sleep(100); // 模拟生产耗时 } catch (InterruptedException e) { e.printStackTrace(); } } } } ``` 然后,创建消费者线程,它从队列中取出并消费产品: ```java class Consumer implements ...

    解析Java的多线程机制

    继承`Thread`类的方法直接扩展`Thread`类,并重写`run()`方法来定义线程的行为。另一种实现`Runnable`接口的方式则允许线程与其他类一起实现多个接口,增加了代码的灵活性,通过创建`Thread`对象并将`Runnable`实例...

    java多线程及死锁.doc

    实现Runnable接口时,需要创建一个类实现Runnable接口,并重写run()方法,然后将该对象传入Thread类的构造函数,创建Thread实例并调用start()启动。 线程的生命周期包括新建、可运行、运行、阻塞和死亡五个状态。...

    关于线程池的代码demo

    Thread.sleep(1000); // 模拟耗时操作 } catch (InterruptedException e) { e.printStackTrace(); } } } ``` 在这个示例中,我们首先创建了一个固定大小为4的线程池,然后提交了10个任务(`WorkerThread`实例...

    Java应用开发多线程

    - **实现Runnable接口**:创建一个实现`Runnable`接口的类,实现`run()`方法,然后将`Runnable`对象作为参数传递给`Thread`类的构造器,创建`Thread`对象并调用`start()`方法。 3. **线程控制**: - **sleep()**...

    Java并发编程实践.pdf

    2. 实现`Runnable`接口,提供一个实现了`run()`方法的类,并将其实例传递给`Thread`构造函数。 在`run()`方法中编写线程的具体执行逻辑。线程同步和通信机制,如`synchronized`关键字、`wait()`, `notify()`, `...

    76-教学课件-示例:Linux的PCB1

    /* -1 unrunnable, 0 runnable, &gt;0 stopped */ struct thread_info *thread_info; atomic_t usage; unsigned long flags; /* per process flags, defined below */ ... int prio, static_prio; struct list_...

    JDK_API_1_6

    Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } } } ``` 这段代码展示了如何使用JDK 1.6中的并发工具包创建线程池并执行任务,是JDK 1.6强大功能的一个具体体现。 #### 四...

    Java企业系列面试题(线程篇).docx

    - 实现`Runnable`接口:创建一个实现了`Runnable`接口的类,实现`run()`方法,然后将该类的实例传递给`Thread`类的构造函数。 - 使用`Executor`框架:通过`ExecutorService`和`ThreadPoolExecutor`等类创建线程池...

    学校的电商法期末复习

    - `run()`方法包含于`java.lang.Thread`中,是这个线程的功能,需要用户重写。 - `start()`方法用于启动线程,通常在其他地方(如`main()`函数)调用此方法,不需要用户重写。 - 直接调用`t1.run();`不会启动新的线程...

Global site tag (gtag.js) - Google Analytics