1. 程式人生 > >Java多執行緒方面的程式設計筆試題(通過繼承Thread類啟動執行緒)

Java多執行緒方面的程式設計筆試題(通過繼承Thread類啟動執行緒)

/*
 * 寫兩個執行緒,一個執行緒列印 1~52,另一個執行緒列印字母A-Z。列印順序為12A34B56C……5152Z。要求用執行緒間的通訊。
 * 注:分別給兩個物件構造一個物件o,數字每列印兩個或字母每列印一個就執行o.wait()。
 */
public class TestExtends{
 public static void main(String[] args) {
  Printer p = new Printer();
  Thread t1 = new NumberPrinter(p);
  Thread t2 = new LetterPrinter(p);
  t1.start();
  t2.start();
 }
}
/*
 * 主方法
 */
class Printer{
 private int index = 1;//設為1,方便計算3的倍數
 //列印數字的構造方法,每列印兩個數字,等待列印一個字母
 public synchronized void print(int i){
  while(index%3==0){
   try{
    wait();
   }catch(Exception e){
    
   }
  }
  System.out.print(" "+i);
  index++;
  notifyAll();
 }
 //列印字母,每列印一個字母,等待列印兩個數字
 public synchronized void print(char c){
  while(index%3!=0){
   try{
    wait();
   }catch(Exception e){
   
   }
  }
  System.out.print(" "+c);
  index++;
  notifyAll();
 }
}
//列印數字的執行緒
class NumberPrinter extends Thread{
 private Printer p;
 public NumberPrinter(Printer p){
  this.p = p;
 }
 public void run(){
  for(int i = 1; i<=52; i++){
   p.print(i);
  }
 }
}
//列印字母的執行緒
class LetterPrinter extends Thread{
 private Printer p;
 public LetterPrinter(Printer p){
  this.p = p;
 }
 public void run(){
  for(char c='A'; c<='Z'; c++){
   p.print(c);
  }
 }
}

相關推薦

Java執行方面程式設計試題通過繼承Thread啟動執行

/*  * 寫兩個執行緒,一個執行緒列印 1~52,另一個執行緒列印字母A-Z。列印順序為12A34B56C……5152Z。要求用執行緒間的通訊。  * 注:分別給兩個物件構造一個物件o,數字每列印兩

啟動執行的五種方式方法(通過繼承Thread或實現Runnable介面)

package day01; /**  * 啟動執行緒的五種方式方法:  * 本質:繼承Thread類或實現runnable介面  * @author Administrator  *  */ public class ThreadDemo {  /**   * @para

32-執行--概述+Thread+執行的建立方式繼承Thread+實現Runnable介面+Runnable介面+執行的名稱+執行的狀態

一、概述 1、程序:對應的是一個應用程式在記憶體中的所屬空間。程序是不直接執行的,它只是在分配該應用程式的記憶體空間 注:如果一個程式在記憶體中開闢了空間,就代表它在執行。不執行要釋放空間 2、執行緒:程序中的一個負責程式執行的控制單元,也叫執行路徑。一個程序中可以有多個執行路徑,稱之為

Linux運維必會的實戰程式設計試題19題

以下Linux運維筆試面試程式設計題,彙總整理自老男孩、馬哥等培訓機構,由運維派根據實戰需求,略有調整: 企業面試題1:(生產實戰案例):監控MySQL主從同步是否異常,如果異常,則傳送簡訊或者郵件給管理員。提示:如果沒主從同步環境,可以用下面文字放到檔案裡讀取來模擬: 階段1:開發一個守護程序指令

Java試題——執行安全、String、StringBuffer、StringBuilder

1.什麼是執行緒安全? 簡單地說法:執行緒安全可以簡單理解為一個方法或者一個例項可以在多執行緒環境中使用而不會出現問題。 複雜的說法:當多個執行緒訪問同一個物件時,如果不用考慮這些執行緒在執行時環境下的排程和交替執行,也不需要進行額外的同步,或者在呼叫方進行任何其他的協調操作,呼叫這個物件的

網際網路架構執行併發程式設計高階教程

#基礎篇幅:執行緒基礎知識、併發安全性、JDK鎖相關知識、執行緒間的通訊機制、JDK提供的原子類、併發容器、執行緒池相關知識點  #高階篇幅:ReentrantLock原始碼分析、對比兩者原始碼,更加深入理解讀寫鎖,JAVA記憶體模型、先行發生原則、指令重排序 #環境說明:idea、ja

Java執行2—— 執行實現之繼承Thread

1.1、使用多執行緒 一個程序在執行時至少會有1個執行緒在執行,執行緒會在後臺執行;例如呼叫public static void main() 方法的執行緒就是如此,而且由JVM建立。 package

java 執行之利用Thread建立執行Day02

前言:在一個程式中,如果一次只完成一件事情,很容易實現,但現實生活中很多事情都是同時進行的,所以在java中為了模擬這種狀態,引入了執行緒機制,簡單的說,當程式同時完成很多事情時,就是所謂的多執行緒。 實現執行緒的兩種方式:一是通過繼承Thread類來建立執行緒,另一種方法

Java執行的實現程序與執行的概念、Java繼承Thread實現執行Java實現Runnable介面實現執行Thread與Runnable的區別、實現Callable介面實現執行

1 程序與執行緒 1.1 程序與執行緒的概念 什麼是程序?   程序: 作業系統中一個程式的執行週期。(比如我們想要在電腦上登入QQ,從雙擊qq按鈕---->關閉qq這個過程就是一個程序)   多程序: 同一時刻跑多個程式。   在DOS(磁碟作業系統時

Java執行01(Thread執行建立、執行池)

Java多執行緒(Thread類、執行緒建立、執行緒池) 第一章 多執行緒 1.1 多執行緒介紹 1.1.1 基本概念 程序:程序指正在執行的程式。確切的來說,當一個程式進入記憶體執行,即變成一個程序,程序是處於執行過程中的程式,並且具有一定獨立功能。 執行緒:執行緒是程序中的一個執行單元,

四、JAVA執行執行安全與資料同步 synchronized、This Monitor、Class Monitor

      本章首先從一個簡單的例子入手,講解了資料同步的概念,以及會引發資料不一致性問題的情況,然後非常詳細地介紹了synchronized關鍵字以及與其對應的JVM指令。本章的最後還分析了幾種可能引起程式進入死鎖的原因,以及如何使用工具進行診斷,執行緒安全與資料同步

java--執行建立的兩種方式Thread和Runnable介面

(一)繼承Thread類建立多執行緒----單執行緒下面的程式碼是一個死迴圈,但是不會執行main裡面的迴圈語句,而是run()裡面的語句,這是因為該程式是一個單執行緒程式,當呼叫MyThread類的run()方法時,遇到死迴圈,迴圈一直進行。因此,MyThread類的列印

執行——Java繼承Thread與實現Runnable介面的區別

執行緒我只寫過繼承Thread類的,後來知道java多執行緒有三種方式,今天首先比較一下常用的繼承Thread類和實現Runnable介面的區別。 按著Ctrl鍵進入Thread之後,發現Thread

Java併發03:執行實現三方式:繼承Thread、實現Runnable介面、實現Callable介面

本章主要對Java多執行緒實現的三種方式進行學習。 1.序言 在JDK5版本之前,提供了兩種多執行緒的實現方式: 繼承Thread類,重寫run()方法 實現Runnable介面,實現run()方法 這兩種種方式的本質都是一個:實現Runna

java實現執行的兩種方式繼承Thread和實現Runnable介面

 * 實現方式和繼承方式有什麼區別呢?  *         區別:  *                 繼承Thread:執行緒程式碼存放在Thread子類run方法中  *                 實現Runnable:執行緒程式碼存放在介面的子類的run方法

JAVA執行實現的三種方式(繼承Thread、實現Runnable介面、使用ExecutorService、Callable、Future實現有返回結果的執行)

JAVA多執行緒實現方式 JAVA多執行緒實現方式主要有三種:繼承Thread類、實現Runnable介面、使用ExecutorService、Callable、Future實現有返回結果的多執行緒。其中前兩種方式執行緒執行完後都沒有返回值,只有最後一種是帶返回值的。

Java試題3

scan abd bst spl 輸出 rst != first adf /** * 輸入: * safab qeabd abdfe (以空格隔開) * ab * 輸出ab出現的次數並逆序輸出含有ab的字符串 * 輸出: * 3 * a

Java試題2

spl res new void scan system.in lin () static /** * 一個物體從高h處下落,下落後會反彈到離地面高上一次下降高度的1/2,求當第m次接觸地面時走過路徑的長度 * 輸入: * 100,1

Java試題5

stat 裏的 pre 做的 靜態 string main clas 答案 class Test{ int getValue(){ static int i=0; i++; return i; } p

Java試題

1.以下java程式程式碼,執行後的結果是() java.util.HashMap map=new java.util.HashMap(); map.put("name",null); map.put("name","Jack"); System.out.println(map.s