Tuesday, March 3, 2020
Friday, February 21, 2020
Monday, February 17, 2020
Tuesday, January 21, 2020
Saturday, June 22, 2019
Wednesday, June 19, 2019
java LinkedList Example
package linkedlistexp;
class Node {
int data;
Node nextNode;
}
class LinkedList {
private Node head;
public void insert(int data) {
System.out.println("----------insert() data=" + data);
//create a new Node and store a data.
Node new_node = new Node();
new_node.data = data;
new_node.nextNode = null;
//check the head is null or not.
//if head is null, assign the Node and exit.
if (this.head == null) {
head = new_node;
System.out.println("1st node: head.data=" + head.data + " next=" + head.nextNode + " ");
return;
}
//assign a head into the last Node and loop it until find the null reference.
Node lastNode = this.head;
while (lastNode.nextNode != null) {
lastNode = lastNode.nextNode;
System.out.println("while() : last.data=" + lastNode.data+ " last.next=" + lastNode.nextNode);
}
//assign new node.
lastNode.nextNode = new_node;
System.out.println("last.next.data=" + lastNode.nextNode.data+
" last.next.next=" + lastNode.nextNode.nextNode);
}
public void print() {
if (this.head == null) {
return;
}
//print all nodes
Node tempNode = this.head;
while (tempNode != null) {
System.out.print(tempNode.data + "->");
tempNode = tempNode.nextNode;
}
System.out.println("NULL");
}
}
public class LinkedListExp {
public static void main(String[] args) {
LinkedList ls = new LinkedList();
ls.insert(10);
ls.insert(20);
ls.insert(30);
ls.insert(40);
ls.insert(50);
ls.print();
}
}
output:
run:
run:
----------insert() data=10
1st node: head.data=10 next=null
----------insert() data=20
last.next.data=20 last.next.next=null
----------insert() data=30
while() : last.data=20 last.next=null
last.next.data=30 last.next.next=null
----------insert() data=40
while() : last.data=20 last.next=linkedlistexp.Node@15db9742
while() : last.data=30 last.next=null
last.next.data=40 last.next.next=null
----------insert() data=50
while() : last.data=20 last.next=linkedlistexp.Node@15db9742
while() : last.data=30 last.next=linkedlistexp.Node@6d06d69c
while() : last.data=40 last.next=null
last.next.data=50 last.next.next=null
10->20->30->40->50->NULL
BUILD SUCCESSFUL (total time: 0 seconds)
---------------------------------------------------------------------------------------------------------
----------insert() data=10
1st node: head.data=10 next=null
----------insert() data=20
last.next.data=20 last.next.next=null
----------insert() data=30
while() : last.data=20 last.next=null
last.next.data=30 last.next.next=null
----------insert() data=40
while() : last.data=20 last.next=linkedlistexp.Node@15db9742
while() : last.data=30 last.next=null
last.next.data=40 last.next.next=null
----------insert() data=50
while() : last.data=20 last.next=linkedlistexp.Node@15db9742
while() : last.data=30 last.next=linkedlistexp.Node@6d06d69c
while() : last.data=40 last.next=null
last.next.data=50 last.next.next=null
10->20->30->40->50->NULL
BUILD SUCCESSFUL (total time: 0 seconds)
---------------------------------------------------------------------------------------------------------
Advantages of a Linked List
- Insertions and deletions are quick.
- Grows and shrinks as needed.
Disadvantages of a Linked List
- Random access is slow. Objects in a linked list must be accessed sequentially, therefore, it can be slow to access a specific object.
- Memory is a concern. Each object in a linked list requires data as well as one (or more) pointers to other objects in the linked list. Using significantly less memory, each object in an array only requires data.
When to Use a Linked List?
- You don’t need random access to any specific elements.
- You need to do constant insertions and deletions.
- You’re not sure how many items will be in the list.
Thursday, August 23, 2018
java xml parsing
download: http://www.mediafire.com/file/wcob5kk3013kvkp/sax_project1.zip/file
<?xml version="1.0" encoding="UTF-8"?>
<department>
<employee>
<empNo>E01</empNo>
<empName>KING</empName>
<hireDate>17-11-1981</hireDate>
<salary>100000</salary>
</employee>
<employee>
<empNo>E02</empNo>
<empName>JONES</empName>
<hireDate>02-04-1981</hireDate>
<salary>200000</salary>
</employee>
</department>
<?xml version="1.0" encoding="UTF-8"?>
<department>
<employee>
<empNo>E01</empNo>
<empName>KING</empName>
<hireDate>17-11-1981</hireDate>
<salary>100000</salary>
</employee>
<employee>
<empNo>E02</empNo>
<empName>JONES</empName>
<hireDate>02-04-1981</hireDate>
<salary>200000</salary>
</employee>
</department>
Tuesday, November 21, 2017
Sunday, November 19, 2017
android show notification like viber when app is in background
Manifest.xml
------------------------------------------------
<activity android:name=".pushnotification.NewMsgDialogActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
MyFirebaseMEssagingService.java
------------------------------------------------
final Intent intent = new Intent(MyFirebaseMEssagingService.this, NewMsgDialogActivity.class);
intent.putExtra("trainerId", trainer_id);
intent.putExtra("trainer_image_str", trainer_image_str);
intent.putExtra("trainer_name", trainer_name);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(MyFirebaseMEssagingService.this, 0, intent, 0);
try {
// Perform the operation associated with our pendingIntent
pendingIntent.send();
} catch (PendingIntent.CanceledException e) {
e.printStackTrace();
}
NewMsgDialogActivity.java
------------------------------------------------
public class NewMsgDialogActivity extends Activity {
String trainerId, trainer_name, trainer_image_str = "";
public static String new_msg = "";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
show_new_msg_dialog();
}
public void show_new_msg_dialog() {
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle(getResources().getString(R.string.new_msg))
.setCancelable(false)
.setIcon(R.drawable.messages_icon)
.setMessage(NewMsgDialogActivity.new_msg)
.setNegativeButton("Ignore", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface, int i) {
dialoginterface.dismiss();
finish();
}
})
.setPositiveButton("Check", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface, int i) {
goto_voice_msg_activity();
dialoginterface.dismiss();
finish();
}
}).show();
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
}
android check app is running foreground
static boolean shouldShowNotification(Context context) {
ActivityManager.RunningAppProcessInfo myProcess = new ActivityManager.RunningAppProcessInfo();
ActivityManager.getMyMemoryState(myProcess);
if (myProcess.importance != ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND)
return true;
KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
// app is in foreground, but if screen is locked show notification anyway
return km.inKeyguardRestrictedInputMode();
}
ActivityManager.RunningAppProcessInfo myProcess = new ActivityManager.RunningAppProcessInfo();
ActivityManager.getMyMemoryState(myProcess);
if (myProcess.importance != ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND)
return true;
KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
// app is in foreground, but if screen is locked show notification anyway
return km.inKeyguardRestrictedInputMode();
}
Wednesday, April 19, 2017
java binary tree
// ref: http://javabeat.net/binary-search-tree-traversal-java/
package binarysearchtreedemo;
public class BinarySearchTreeDemo {
public static void main(String[] args) {
BinarySearchTree bst = new BinarySearchTree();
int[] nums = {40, 25, 78, 10, 32};
// int[] nums = {10, 20, 0, 5, 15};
for (int i : nums) {
bst.insert(i);
}
// System.out.println("Inorder traversal");
// bst.printInorder();
System.out.println("Preorder Traversal");
bst.printPreorder();
// System.out.println("Postorder Traversal");
// bst.printPostorder();
//
// System.out.println("The minimum value in the BST: " + bst.findMinimum());
// System.out.println("The maximum value in the BST: " + bst.findMaximum());
System.out.println("Print Same Level Node: " );
bst.printSameLevelNode(3);
}
}
------------------------------------------------------------------------------------------------------------------
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package binarysearchtreedemo;
import java.util.ArrayList;
/**
* Represents the Binary Search Tree.
*/
public class BinarySearchTree {
//Refrence for the root of the tree.
public Node root;
ArrayList<Integer> nodeAl = new ArrayList<Integer>();
int level_no, count = 0,tree_height, desired_level;
public BinarySearchTree insert(int value) {
Node node = new Node(value);
if (root == null) {
root = node;
return this;
}
insertRec(root, node);
return this;
}
private void insertRec(Node latestRoot, Node node) {
if (latestRoot.value > node.value) {
if (latestRoot.left == null) {
latestRoot.left = node;
// return;
} else {
insertRec(latestRoot.left, node);
}
} else {
if (latestRoot.right == null) {
latestRoot.right = node;
// return;
} else {
insertRec(latestRoot.right, node);
}
}
}
public void printSameLevelNode(int _desired_level) {
// level_no = _level_no;
// printSameLevelNode(root);
// nodeAl.clear();
tree_height = height(root);
desired_level = _desired_level;
System.out.println("height=" + tree_height);
int i;
// for (i = 1; i <= h; i++) {
// printGivenLevel(root, i);
// }
if(desired_level>tree_height || desired_level<=0)
{
System.out.print("Highest level number can be 1 to "+tree_height);
}
else
{
printGivenLevel(root, desired_level);
}
System.out.print("\n");
}
/* Print nodes at the given level */
void printGivenLevel(Node root, int level) {
if (root == null) {
return;
}
if (level == 1) {
count++;
if(count==1)
{
System.out.print("Level "+ desired_level+" Nodes are: ");
}
System.out.print(root.value + " ");
} else if (level > 1) {
printGivenLevel(root.left, level - 1);
printGivenLevel(root.right, level - 1);
}
}
int height(Node root) {
if (root == null) {
return 0;
} else {
/* compute height of each subtree */
int lheight = height(root.left);
int rheight = height(root.right);
/* use the larger one */
if (lheight > rheight) {
return (lheight + 1);
} else {
return (rheight + 1);
}
}
}
public void printSameLevelNode(Node _currRoot) {
Node currNode = _currRoot;
System.out.println("parent Node=" + currNode.value + " left child=" + currNode.left.value + " right child=" + currNode.right.value);
for (int i = 0; i <= level_no; i++) {
if (i == level_no) {
// nodeAl.add(currNode.left.value);
// nodeAl.add(currNode.right.value);
} else {
printSameLevelNode(currNode.left);
printSameLevelNode(currNode.right);
}
}
// System.out.println("nodeAl=" + nodeAl);
}
/**
* Returns the minimum value in the Binary Search Tree.
*/
public int findMinimum() {
if (root == null) {
return 0;
}
Node currNode = root;
while (currNode.left != null) {
currNode = currNode.left;
System.out.println("currNode=" + currNode.value);
}
return currNode.value;
}
/**
* Returns the maximum value in the Binary Search Tree
*/
public int findMaximum() {
if (root == null) {
return 0;
}
Node currNode = root;
while (currNode.right != null) {
currNode = currNode.right;
}
return currNode.value;
}
/**
* Printing the contents of the tree in an inorder way.
*/
public void printInorder() {
printInOrderRec(root);
System.out.println("");
}
/**
* Helper method to recursively print the contents in an inorder way
*/
private void printInOrderRec(Node currRoot) {
if (currRoot == null) {
return;
}
printInOrderRec(currRoot.left);
System.out.print(currRoot.value + ", ");
printInOrderRec(currRoot.right);
}
/**
* Printing the contents of the tree in a Preorder way.
*/
public void printPreorder() {
printPreOrderRec(root);
System.out.println("");
}
/**
* Helper method to recursively print the contents in a Preorder way
*/
private void printPreOrderRec(Node currRoot) {
if (currRoot == null) {
return;
}
System.out.print(currRoot.value + ", ");
printPreOrderRec(currRoot.left);
printPreOrderRec(currRoot.right);
}
/**
* Printing the contents of the tree in a Postorder way.
*/
public void printPostorder() {
printPostOrderRec(root);
System.out.println("");
}
/**
* Helper method to recursively print the contents in a Postorder way
*/
private void printPostOrderRec(Node currRoot) {
if (currRoot == null) {
return;
}
printPostOrderRec(currRoot.left);
printPostOrderRec(currRoot.right);
System.out.print(currRoot.value + ", ");
}
}
------------------------------------------------------------------------------------------------------------------
package binarysearchtreedemo;
public class Node {
//The value present in the node.
public int value;
//The reference to the left subtree.
public Node left;
//The reference to the right subtree.
public Node right;
public Node(int value) {
this.value = value;
}
}
------------------------------------------------------------------------------------------------------------------
output:
Preorder Traversal
40, 25, 10, 32, 78,
Print Same Level Node:
height=3
Level 3 Nodes are: 10 32
------------------------------------------------------------------------------------------------------------------
output:
Preorder Traversal
40, 25, 10, 32, 78,
Print Same Level Node:
height=3
Level 3 Nodes are: 10 32
Monday, March 20, 2017
java thread Wait & Notify example
WaitNotifyTest .java
------------------------------------------------------
package waitnotifytest;
public class WaitNotifyTest {
public static void main(String[] args) {
Message msg = new Message("process it");
Waiter waiter = new Waiter(msg);
new Thread(waiter,"waiter_1").start();
Waiter waiter1 = new Waiter(msg);
new Thread(waiter1, "waiter2").start();
Notifier notifier = new Notifier(msg);
new Thread(notifier, "notifier").start();
System.out.println("All the threads are started");
}
}
Waiter.java
----------------------------------------------------------------------
package waitnotifytest;
import java.util.Date;
public class Waiter implements Runnable{
private Message msg;
public Waiter(Message m){
this.msg=m;
}
@Override
public void run() {
String thread_name = Thread.currentThread().getName();
synchronized (msg) {
try{
System.out.println(thread_name+" waiting to get notified at time:"+System.currentTimeMillis()+ " min="+new Date().getMinutes()+" sec=" + new Date().getSeconds());
msg.wait();
System.out.println("--wait()");
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println(thread_name+" after wait at time:"+System.currentTimeMillis()+ " min="+new Date().getMinutes()+" sec=" + new Date().getSeconds());
//process the message now
System.out.println(thread_name+" processed: "+msg.getMsg());
}
}
}
Notifier.java
------------------------------------------------------
package waitnotifytest;
public class Notifier implements Runnable {
private Message msg;
public Notifier(Message msg) {
this.msg = msg;
}
@Override
public void run() {
String thread_name = Thread.currentThread().getName();
System.out.println(thread_name+" started");
try {
Thread.sleep(1000);
synchronized (msg) {
msg.setMsg("Notifier thread_name=" + thread_name+" Notifier work done");
// msg.notify();
msg.notifyAll();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Message.java
-----------------------------------------------------------------------------------
package waitnotifytest;
public class Message {
private String msg;
public Message(String str){
this.msg=str;
}
public String getMsg() {
return msg;
}
public void setMsg(String str) {
this.msg=str;
}
}
###############output#################
All the threads are started
notifier started
waiter_1 waiting to get notified at time:1490077406336 min=23 sec=26
waiter2 waiting to get notified at time:1490077406342 min=23 sec=26
--wait()
waiter2 after wait at time:1490077407336 min=23 sec=27
waiter2 processed: Notifier thread_name=notifier Notifier work done
--wait()
waiter_1 after wait at time:1490077407336 min=23 sec=27
waiter_1 processed: Notifier thread_name=notifier Notifier work done
------------------------------------------------------
package waitnotifytest;
public class WaitNotifyTest {
public static void main(String[] args) {
Message msg = new Message("process it");
Waiter waiter = new Waiter(msg);
new Thread(waiter,"waiter_1").start();
Waiter waiter1 = new Waiter(msg);
new Thread(waiter1, "waiter2").start();
Notifier notifier = new Notifier(msg);
new Thread(notifier, "notifier").start();
System.out.println("All the threads are started");
}
}
Waiter.java
----------------------------------------------------------------------
package waitnotifytest;
import java.util.Date;
public class Waiter implements Runnable{
private Message msg;
public Waiter(Message m){
this.msg=m;
}
@Override
public void run() {
String thread_name = Thread.currentThread().getName();
synchronized (msg) {
try{
System.out.println(thread_name+" waiting to get notified at time:"+System.currentTimeMillis()+ " min="+new Date().getMinutes()+" sec=" + new Date().getSeconds());
msg.wait();
System.out.println("--wait()");
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println(thread_name+" after wait at time:"+System.currentTimeMillis()+ " min="+new Date().getMinutes()+" sec=" + new Date().getSeconds());
//process the message now
System.out.println(thread_name+" processed: "+msg.getMsg());
}
}
}
Notifier.java
------------------------------------------------------
package waitnotifytest;
public class Notifier implements Runnable {
private Message msg;
public Notifier(Message msg) {
this.msg = msg;
}
@Override
public void run() {
String thread_name = Thread.currentThread().getName();
System.out.println(thread_name+" started");
try {
Thread.sleep(1000);
synchronized (msg) {
msg.setMsg("Notifier thread_name=" + thread_name+" Notifier work done");
// msg.notify();
msg.notifyAll();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Message.java
-----------------------------------------------------------------------------------
package waitnotifytest;
public class Message {
private String msg;
public Message(String str){
this.msg=str;
}
public String getMsg() {
return msg;
}
public void setMsg(String str) {
this.msg=str;
}
}
###############output#################
All the threads are started
notifier started
waiter_1 waiting to get notified at time:1490077406336 min=23 sec=26
waiter2 waiting to get notified at time:1490077406342 min=23 sec=26
--wait()
waiter2 after wait at time:1490077407336 min=23 sec=27
waiter2 processed: Notifier thread_name=notifier Notifier work done
--wait()
waiter_1 after wait at time:1490077407336 min=23 sec=27
waiter_1 processed: Notifier thread_name=notifier Notifier work done
java thread & synchronized example
package threadjoinexample;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ThreadJoinExample {
public static void main(String[] args) {
Table mTable = new Table();//only one object
Thread t1 = new Thread(new MyRunnable(mTable), "1st");
Thread t2 = new Thread(new MyRunnable(mTable), "2nd");
Thread t3 = new Thread(new MyRunnable(mTable), "3rd");
t1.start();
//start second thread after waiting for 2 seconds or if it's dead
// try {
//// t1.join(2000);
// System.out.println("1st try");
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
try {
t1.join();
} catch (InterruptedException ex) {
Logger.getLogger(ThreadJoinExample.class.getName()).log(Level.SEVERE, null, ex);
}
t2.start();
//checks if this thread is alive
System.out.println(t1.getName() + "=, isAlive = " + t1.isAlive());
//start third thread only when first thread is dead
// try {
//// t1.join();
// System.out.println("2nd block try="+t1.getName());
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
try {
t2.join();
} catch (InterruptedException ex) {
Logger.getLogger(ThreadJoinExample.class.getName()).log(Level.SEVERE, null, ex);
}
t3.start();
try {
t3.join();
} catch (InterruptedException ex) {
Logger.getLogger(ThreadJoinExample.class.getName()).log(Level.SEVERE, null, ex);
}
//let all threads finish execution before finishing main thread
// try {
//
//// t1.join();
//
// System.out.print(t2.getName());
// //checks if this thread is alive
// System.out.println(", t2 isAlive = " + t2.isAlive());
//
//// t2.join();
//// t3.join();
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
System.out.println("All threads are dead, exiting main thread");
}
}
class MyRunnable implements Runnable {
Table t;
MyRunnable(Table t) {
this.t = t;
}
synchronized void test() {
for (int i = 1; i <= 5; i++) {
try {
Thread.sleep(500);
} catch (Exception e) {
System.out.println(e);
}
System.out.println(i*100 + " " + Thread.currentThread().getName());
}
}
@Override
public void run() {
System.out.println("--Thread started:::" + Thread.currentThread().getName());
t.printTable(100);
// test();
// try {
// Thread.sleep(4000);
// System.out.println("run() 4s after=" + Thread.currentThread().getName());
//
// test();
//
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
System.out.println("!--Thread ended:::" + Thread.currentThread().getName()+"\n\n");
}
}
class Table {
synchronized void printTable(int n) {//synchronized method
for (int i = 1; i <= 5; i++) {
try {
Thread.sleep(500);
} catch (Exception e) {
System.out.println(e);
}
System.out.println(i*100 + " " + Thread.currentThread().getName());
}
}
}
import java.util.logging.Level;
import java.util.logging.Logger;
public class ThreadJoinExample {
public static void main(String[] args) {
Table mTable = new Table();//only one object
Thread t1 = new Thread(new MyRunnable(mTable), "1st");
Thread t2 = new Thread(new MyRunnable(mTable), "2nd");
Thread t3 = new Thread(new MyRunnable(mTable), "3rd");
t1.start();
//start second thread after waiting for 2 seconds or if it's dead
// try {
//// t1.join(2000);
// System.out.println("1st try");
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
try {
t1.join();
} catch (InterruptedException ex) {
Logger.getLogger(ThreadJoinExample.class.getName()).log(Level.SEVERE, null, ex);
}
t2.start();
//checks if this thread is alive
System.out.println(t1.getName() + "=, isAlive = " + t1.isAlive());
//start third thread only when first thread is dead
// try {
//// t1.join();
// System.out.println("2nd block try="+t1.getName());
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
try {
t2.join();
} catch (InterruptedException ex) {
Logger.getLogger(ThreadJoinExample.class.getName()).log(Level.SEVERE, null, ex);
}
t3.start();
try {
t3.join();
} catch (InterruptedException ex) {
Logger.getLogger(ThreadJoinExample.class.getName()).log(Level.SEVERE, null, ex);
}
//let all threads finish execution before finishing main thread
// try {
//
//// t1.join();
//
// System.out.print(t2.getName());
// //checks if this thread is alive
// System.out.println(", t2 isAlive = " + t2.isAlive());
//
//// t2.join();
//// t3.join();
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
System.out.println("All threads are dead, exiting main thread");
}
}
class MyRunnable implements Runnable {
Table t;
MyRunnable(Table t) {
this.t = t;
}
synchronized void test() {
for (int i = 1; i <= 5; i++) {
try {
Thread.sleep(500);
} catch (Exception e) {
System.out.println(e);
}
System.out.println(i*100 + " " + Thread.currentThread().getName());
}
}
@Override
public void run() {
System.out.println("--Thread started:::" + Thread.currentThread().getName());
t.printTable(100);
// test();
// try {
// Thread.sleep(4000);
// System.out.println("run() 4s after=" + Thread.currentThread().getName());
//
// test();
//
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
System.out.println("!--Thread ended:::" + Thread.currentThread().getName()+"\n\n");
}
}
class Table {
synchronized void printTable(int n) {//synchronized method
for (int i = 1; i <= 5; i++) {
try {
Thread.sleep(500);
} catch (Exception e) {
System.out.println(e);
}
System.out.println(i*100 + " " + Thread.currentThread().getName());
}
}
}
Sunday, March 19, 2017
java thread join example
package threadjoinexample;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ThreadJoinExample {
public static void main(String[] args) {
Thread t1 = new Thread(new MyRunnable(), "1st");
Thread t2 = new Thread(new MyRunnable(), "2nd");
Thread t3 = new Thread(new MyRunnable(), "3rd");
// try {
// t2.join();
// } catch (InterruptedException ex) {
// Logger.getLogger(ThreadJoinExample.class.getName()).log(Level.SEVERE, null, ex);
// }
t1.start();
//start second thread after waiting for 2 seconds or if it's dead
// try {
//// t1.join(2000);
// System.out.println("1st try");
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
try {
t1.join();
} catch (InterruptedException ex) {
Logger.getLogger(ThreadJoinExample.class.getName()).log(Level.SEVERE, null, ex);
}
t2.start();
//checks if this thread is alive
System.out.println(t1.getName()+"=, isAlive = " + t1.isAlive());
//start third thread only when first thread is dead
// try {
//// t1.join();
// System.out.println("2nd block try="+t1.getName());
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
try {
t2.join();
} catch (InterruptedException ex) {
Logger.getLogger(ThreadJoinExample.class.getName()).log(Level.SEVERE, null, ex);
}
t3.start();
//let all threads finish execution before finishing main thread
try {
t1.join();
System.out.print(t2.getName());
//checks if this thread is alive
System.out.println(", t2 isAlive = " + t2.isAlive());
t2.join();
t3.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("All threads are dead, exiting main thread");
}
}
class MyRunnable implements Runnable {
@Override
public synchronized void run() {
System.out.println("--Thread started:::" + Thread.currentThread().getName());
try {
Thread.sleep(4000);
System.out.println("run() 4s after=" + Thread.currentThread().getName());
for (int i = 1; i <= 5; i++) {
try {
Thread.sleep(500);
} catch (Exception e) {
System.out.println(e);
}
System.out.println(i + " " + Thread.currentThread().getName());
}
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("--Thread ended:::" + Thread.currentThread().getName());
}
}
----------------------------------
output:
--Thread started:::1st
run() 4s after=1st
1 1st
2 1st
3 1st
4 1st
5 1st
--Thread ended:::1st
1st=, isAlive = false
--Thread started:::2nd
run() 4s after=2nd
1 2nd
2 2nd
3 2nd
4 2nd
5 2nd
--Thread ended:::2nd
2nd, t2 isAlive = false
--Thread started:::3rd
run() 4s after=3rd
1 3rd
2 3rd
3 3rd
4 3rd
5 3rd
--Thread ended:::3rd
All threads are dead, exiting main thread
import java.util.logging.Level;
import java.util.logging.Logger;
public class ThreadJoinExample {
public static void main(String[] args) {
Thread t1 = new Thread(new MyRunnable(), "1st");
Thread t2 = new Thread(new MyRunnable(), "2nd");
Thread t3 = new Thread(new MyRunnable(), "3rd");
// try {
// t2.join();
// } catch (InterruptedException ex) {
// Logger.getLogger(ThreadJoinExample.class.getName()).log(Level.SEVERE, null, ex);
// }
t1.start();
//start second thread after waiting for 2 seconds or if it's dead
// try {
//// t1.join(2000);
// System.out.println("1st try");
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
try {
t1.join();
} catch (InterruptedException ex) {
Logger.getLogger(ThreadJoinExample.class.getName()).log(Level.SEVERE, null, ex);
}
t2.start();
//checks if this thread is alive
System.out.println(t1.getName()+"=, isAlive = " + t1.isAlive());
//start third thread only when first thread is dead
// try {
//// t1.join();
// System.out.println("2nd block try="+t1.getName());
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
try {
t2.join();
} catch (InterruptedException ex) {
Logger.getLogger(ThreadJoinExample.class.getName()).log(Level.SEVERE, null, ex);
}
t3.start();
//let all threads finish execution before finishing main thread
try {
t1.join();
System.out.print(t2.getName());
//checks if this thread is alive
System.out.println(", t2 isAlive = " + t2.isAlive());
t2.join();
t3.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("All threads are dead, exiting main thread");
}
}
class MyRunnable implements Runnable {
@Override
public synchronized void run() {
System.out.println("--Thread started:::" + Thread.currentThread().getName());
try {
Thread.sleep(4000);
System.out.println("run() 4s after=" + Thread.currentThread().getName());
for (int i = 1; i <= 5; i++) {
try {
Thread.sleep(500);
} catch (Exception e) {
System.out.println(e);
}
System.out.println(i + " " + Thread.currentThread().getName());
}
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("--Thread ended:::" + Thread.currentThread().getName());
}
}
----------------------------------
output:
--Thread started:::1st
run() 4s after=1st
1 1st
2 1st
3 1st
4 1st
5 1st
--Thread ended:::1st
1st=, isAlive = false
--Thread started:::2nd
run() 4s after=2nd
1 2nd
2 2nd
3 2nd
4 2nd
5 2nd
--Thread ended:::2nd
2nd, t2 isAlive = false
--Thread started:::3rd
run() 4s after=3rd
1 3rd
2 3rd
3 3rd
4 3rd
5 3rd
--Thread ended:::3rd
All threads are dead, exiting main thread
Sunday, March 5, 2017
android custom camera with surface view
Download: http://www.mediafire.com/file/m99on6dc2d42dss/SurfaceviewExample4.zip
package com.javacodegeeks.androidsurfaceviewexample; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.hardware.Camera; import android.hardware.Camera.PictureCallback; import android.hardware.Camera.ShutterCallback; import android.os.Bundle; import android.util.Log; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; public class AndroidSurfaceviewExample extends Activity implements SurfaceHolder.Callback { Camera camera; SurfaceView surfaceView; SurfaceHolder surfaceHolder; PictureCallback jpegCallback; TextView capture; LinearLayout llcontainer; /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); surfaceView = (SurfaceView) findViewById(R.id.surfaceView); capture = (TextView) findViewById(R.id.capture); llcontainer= (LinearLayout) findViewById(R.id.container); surfaceHolder = surfaceView.getHolder(); // Install a SurfaceHolder.Callback so we get notified when the // underlying surface is created and destroyed. surfaceHolder.addCallback(this); // deprecated setting, but required on Android versions prior to 3.0 surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); capture.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { try { captureImage(view); } catch (IOException e) { e.printStackTrace(); } } }); llcontainer.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { try { captureImage(view); } catch (IOException e) { e.printStackTrace(); } } }); jpegCallback = new PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { FileOutputStream outStream = null; try { outStream = new FileOutputStream(String.format("/sdcard/%d.jpg", System.currentTimeMillis()) ); outStream.write(data); outStream.close(); Log.d("Log", "onPictureTaken - wrote bytes: " + data.length); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { } Toast.makeText(getApplicationContext(), "Picture Saved", Toast.LENGTH_SHORT).show(); refreshCamera(); } }; } public void captureImage(View v) throws IOException { //take the picture camera.takePicture(null, null, jpegCallback); } public void refreshCamera() { if (surfaceHolder.getSurface() == null) { // preview surface does not exist return; } // stop preview before making changes try { camera.stopPreview(); } catch (Exception e) { // ignore: tried to stop a non-existent preview } // set preview size and make any resize, rotate or // reformatting changes here // start preview with new settings try { camera.setPreviewDisplay(surfaceHolder); camera.startPreview(); } catch (Exception e) { } } public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { // Now that the size is known, set up the camera parameters and begin // the preview. refreshCamera(); } public void surfaceCreated(SurfaceHolder holder) { try { // open the camera camera = Camera.open(); } catch (RuntimeException e) { // check for exceptions System.err.println(e); return; } Camera.Parameters param; param = camera.getParameters(); param.setRotation(90); //set rotation to save the picture camera.setDisplayOrientation(90); //set the rotation for preview camera // modify parameter param.setPreviewSize(352, 288); camera.setParameters(param); try { // The Surface has been created, now tell the camera where to draw // the preview. camera.setPreviewDisplay(surfaceHolder); camera.startPreview(); } catch (Exception e) { // check for exceptions System.err.println(e); return; } } public void surfaceDestroyed(SurfaceHolder holder) { // stop preview and release camera camera.stopPreview(); camera.release(); camera = null; } }
Saturday, March 4, 2017
Tuesday, January 24, 2017
java tree example
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package treetest;
public class TreeTest {
public static void main(String[] args) {
Node treeRootNode = new Node(null);
treeRootNode.setId("1");
// add child to root node
Node childNode = addChild(treeRootNode, "2");//742
// add child to the child node created above
addChild(childNode, "4");//69c
addChild(childNode, "5");//69c
//
// // add child to root node
Node child2 = addChild(treeRootNode, "3");//742
// // add child to the child node created above
// addChild(child2, "child-2-1");//922
// addChild(child2, "child-2-2");//922
// addChild(child2, "child-2-2");//922
printTree(treeRootNode, " ");
deleteChild(treeRootNode, "3");
//
// deleteChild(treeRootNode, "1");
// deleteChild(treeRootNode, "1");
printTree(treeRootNode, " ");
}
static Node addChild(Node parent, String id) {
Node node = new Node(parent);
node.setId(id);
node.getParent().getChildren().add(node);
// parent.getChildren().add(node);
System.out.println("---parent.getChildren().get(0)=" + parent.getChildren().get(0).getId() + " Parent=" + parent.getChildren().get(0).getParent().getId());
return node;
}
static void deleteChild(Node parent, String id) {
// if(parent.getParent().getId().equalsIgnoreCase(""))
// {
// System.out.println("---empty tree=" );
// parent.getChildren().clear();
// }
//
for (int i = 0; i < parent.getChildren().size(); i++) {
System.out.println("i=" + i + " " + parent.getChildren().get(i).getId());
if (parent.getId().equalsIgnoreCase(id)) {
System.out.println("--- tree=");
parent.getChildren().clear();
System.out.println("---empty tree=" + parent.getId());
// parent.getParent().setId("");
break;
}
if (id.equalsIgnoreCase(parent.getChildren().get(i).getId())) {
System.out.println("----deleted =" + parent.getChildren().get(i).getId() + " parent=" + parent.getId());
// parent.getChildren().remove(parent.getChildren().get(i).getId());
parent.getChildren().remove(i);
break;
}
deleteChild(parent.getChildren().get(i), id);
}
// parent.getChildren().add(node);
// System.out.println("---parent.getChildren().get(0)="+parent.getChildren().get(0).getId()+ " Parent="+parent.getChildren().get(0).getParent().getId());
}
private static void printTree(Node node, String appender) {
// for (Node each : node.getChildren()) {
// printTree(each, appender + " ** ");
// }
System.out.println(appender + node.getId());
for (int i = 0; i < node.getChildren().size(); i++) {
// System.out.println("i="+i+" "+node.getId());
printTree(node.getChildren().get(i), appender + " ** ");
}
}
}
//////////////////////////////////////////////////////////////
package treetest;
import java.util.ArrayList;
import java.util.List;
public class Node {
private String id;
private List<Node> children = new ArrayList<>();
private Node parent;
public Node(Node parent) {
this.parent = parent;
System.out.println("--cons() parent="+this.parent);
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<Node> getChildren() {
// children.clear();
return children;
}
public Node getParent() {
return parent;
}
}
output:
root
** child#1
** ** child-1-1
** ** child-1-2
** child#2
** ** child-2-1
** ** child-2-2
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package treetest;
public class TreeTest {
public static void main(String[] args) {
Node treeRootNode = new Node(null);
treeRootNode.setId("1");
// add child to root node
Node childNode = addChild(treeRootNode, "2");//742
// add child to the child node created above
addChild(childNode, "4");//69c
addChild(childNode, "5");//69c
//
// // add child to root node
Node child2 = addChild(treeRootNode, "3");//742
// // add child to the child node created above
// addChild(child2, "child-2-1");//922
// addChild(child2, "child-2-2");//922
// addChild(child2, "child-2-2");//922
printTree(treeRootNode, " ");
deleteChild(treeRootNode, "3");
//
// deleteChild(treeRootNode, "1");
// deleteChild(treeRootNode, "1");
printTree(treeRootNode, " ");
}
static Node addChild(Node parent, String id) {
Node node = new Node(parent);
node.setId(id);
node.getParent().getChildren().add(node);
// parent.getChildren().add(node);
System.out.println("---parent.getChildren().get(0)=" + parent.getChildren().get(0).getId() + " Parent=" + parent.getChildren().get(0).getParent().getId());
return node;
}
static void deleteChild(Node parent, String id) {
// if(parent.getParent().getId().equalsIgnoreCase(""))
// {
// System.out.println("---empty tree=" );
// parent.getChildren().clear();
// }
//
for (int i = 0; i < parent.getChildren().size(); i++) {
System.out.println("i=" + i + " " + parent.getChildren().get(i).getId());
if (parent.getId().equalsIgnoreCase(id)) {
System.out.println("--- tree=");
parent.getChildren().clear();
System.out.println("---empty tree=" + parent.getId());
// parent.getParent().setId("");
break;
}
if (id.equalsIgnoreCase(parent.getChildren().get(i).getId())) {
System.out.println("----deleted =" + parent.getChildren().get(i).getId() + " parent=" + parent.getId());
// parent.getChildren().remove(parent.getChildren().get(i).getId());
parent.getChildren().remove(i);
break;
}
deleteChild(parent.getChildren().get(i), id);
}
// parent.getChildren().add(node);
// System.out.println("---parent.getChildren().get(0)="+parent.getChildren().get(0).getId()+ " Parent="+parent.getChildren().get(0).getParent().getId());
}
private static void printTree(Node node, String appender) {
// for (Node each : node.getChildren()) {
// printTree(each, appender + " ** ");
// }
System.out.println(appender + node.getId());
for (int i = 0; i < node.getChildren().size(); i++) {
// System.out.println("i="+i+" "+node.getId());
printTree(node.getChildren().get(i), appender + " ** ");
}
}
}
//////////////////////////////////////////////////////////////
package treetest;
import java.util.ArrayList;
import java.util.List;
public class Node {
private String id;
private List<Node> children = new ArrayList<>();
private Node parent;
public Node(Node parent) {
this.parent = parent;
System.out.println("--cons() parent="+this.parent);
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<Node> getChildren() {
// children.clear();
return children;
}
public Node getParent() {
return parent;
}
}
output:
root
** child#1
** ** child-1-1
** ** child-1-2
** child#2
** ** child-2-1
** ** child-2-2
Monday, January 23, 2017
Thursday, January 19, 2017
android listview with refresher
Download: http://www.mediafire.com/file/elj8c1occ4c9ext/Swipe_to_Refresh_ListView1.zip
replace MainActivity.java page
private String URL_TOP_250 = "http://api.androidhive.info/json/imdb_top_250.php?offset=";
to ur own ip
private String URL_TOP_250 = "http://own_ip/php/imdb_top_250.php?offset=";
for paginated list view
-----------------------------------------------
SELECT * FROM table_name
where trainerId = 1
ORDER BY id DESC
LIMIT 10;
for reverse order data from database
******************************************
Collections.reverse(mList);
replace MainActivity.java page
private String URL_TOP_250 = "http://api.androidhive.info/json/imdb_top_250.php?offset=";
to ur own ip
private String URL_TOP_250 = "http://own_ip/php/imdb_top_250.php?offset=";
for paginated list view
-----------------------------------------------
SELECT * FROM table_name
where trainerId = 1
ORDER BY id DESC
LIMIT 10;
for reverse order data from database
******************************************
Collections.reverse(mList);
Subscribe to:
Posts (Atom)







