㈠ 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 (注意大小寫,別改文件名)
--------------------------有問題發消息我----------------------------