㈠ java编写两个线程,要求一个输出打印1-52,一个输出打印a-z。打印顺序要12a34b56c......51 52 z
package semihum.threadTest;
public class Thread1 implements Runnable {
private Object _lock;
public Thread1(Object lock) {
_lock = lock;
}
@Override
public void run() {
try {
synchronized (_lock) {
for (int i = 0; i < 26; i++) {
//System.out.print((char) ('a' + i));
System.out.print((2 * i + 1) + "" + (2 * i + 2));
_lock.notify();
_lock.wait();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package semihum.threadTest;
public class Thread2 implements Runnable {
private Object _lock;
public Thread2(Object lock) {
_lock = lock;
}
@Override
public void run() {
synchronized (_lock) {
for (int i = 0; i < 26; i++) {
try {
_lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
//System.out.print((2 * i + 1) + "" + (2 * i + 2));
System.out.print((char) ('a' + i));
_lock.notify();
}
}
}
}
package semihum.threadTest;
public class Main {
public static void main(String[] args){
Object lock=new Object();
Thread t1=new Thread(new Thread1(lock));
Thread t2=new Thread(new Thread2(lock));
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//现制,貌似写成a12b34c56...了...您就看着随便改改吧...JDK 1.6
好吧,我改过了,我只想说,LZ你要只是应付作业什么的吧...
㈡ Java多线程调试如何完成信息输出处理
默认情况下,在调试多线程程序时,当遇到断点时(breakpoint),当前线程暂停,而其它线程继续运行,有些情况下,这是我们不想要看到的。比如下面的例子:
再调试多线程程序:
可以看到所有线程都Suspend了。
㈢ java线程Thread.currentThread打印输出后,具体内容代表含义
一个一个回答你
1、其中pool-1-thread-18代表的是当前线程的名回字答吗?
答:是线程名,这个名字是它自己命的名,不用管
2、18代表的是什么?
答:就是排在18号位置上得线程
3、为什么我线程池最大数量为30,却可以得到pool-1-thread-168这样的输出结果?
答:比如说你最开始有1到30号的线程,你1用了之后关闭了,1就木有了,那下一个线程就叫31了,虽然线程池里面还是只有30个,但是你却有了31号。也就是说,数字只是代表了它产生的顺序,却不表示当前的最大
㈣ java中能否得到当前线程是由哪个对象创建来的
似乎只有在这个线程的构造方法或start() 方法中能够有机会记录快照,在一个创建被启动运行之后是没有机会知道的。这里面创建过程只能知道由哪个类的哪个方法在哪个代码行创建的,无法精确地知道是哪个对象实例创建的,除非我们明确的在线程的构造方法中传入一个创建者对象的实例。
如果想做成框架一般通用的自动化的填充创建者而不去修改现有代码的话,我们可能通过 AOP Introction 特性做到这点,比如 AspectJ 就支持 Introction 特性,也就是能给一个类增加特性,比如未实现 java.io.Serializable 的类增加 Serializable 接口,另外再添加个方法什么的。
例如:
{
privateExceptionscenario;
publicWorker(){}
publicsynchronizedvoidstart(){
scenario=newException();
super.start();
}
publicvoidrun(){
System.out.println("我的启动过程如下:");
printScenario();
}
publicvoidprintScenario(){
scenario.printStackTrace();//打印快照,我们通过扫描scenario.getStackTrace();来分析第一个StackTraceElement是哪个类和方法就知道了。
}
}
㈤ java定义一个线程类,循环执行100次输出语句,每次输出线程名和循环的次数
思路: 创建线程继承线程类或者实现线程接口
重写RUN方法 在RUN方法里面写FOR循环, 循环语句块中打印线程类的静态方法.currentThread().getName() +循环的自增值。 ,主线程创建自定义对象实例。 调用START()方法OK、。
㈥ 用c语言 java 来获取当前(进程)线程状态
通过调用Thread.getState()方法获取当前线程的状态。以下是我的代码,可以直接编译运行。
public class Test {
public static void main(String[] args) {
new NewThread().start(); //启动线内程
}
}
class NewThread extends Thread{
public NewThread() {
super("NewThread"); //定义当前线容程的名称为NewThread
}
@Override
public void run() {
System.out.println("当前线程:"+currentThread().getName()+"运行状态为:"+getState()); //打印线程的运行状态
}
}
㈦ java编写一个用于继承Thread并创建两个线程,每个线程输出从1到5的数
--------------------------napolun180410-----------------------------
public class MyThread extends Thread{
public void run(){
try{
for(int i=1;i<6;i++){
System.out.println(i);
sleep(2000);
}
}
catch(InterruptedException e){}
}
public static void main(String args[]){
System.out.println("当前的线程数:"+Thread.activeCount());
MyThread thread1=new MyThread();
thread1.start();
System.out.println("当前的线程数:"+Thread.activeCount());
MyThread thread2=new MyThread();
thread2.start();
System.out.println("当前的线程数:"+Thread.activeCount());
}
}
文件名 MyThread.java (注意大小写,别改文件名)
--------------------------有问题发消息我----------------------------